这是个把指定路径下的所有目录(包含子目录)下以txt为扩展名的文件,重命名为"李宇春.txt" 所发生的问题。程序中使用@d程序正常运行。只是不支持中文目录.但以其他形式的设置路径就出错。望大侠门指点。谢谢!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;namespace d5
{ class Program
{
static void DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
string sbdir ="@"+"\"" + d + "\""; //这里为了将d改成@"e:\mywork\xxx "的形式 DirectoryInfo di = new DirectoryInfo(sbdir);//这样会出错,显示:路径具有非法字符
// DirectoryInfo di = new DirectoryInfo(@d);这里直接使用@d就不出错。但系对"中文目录"就无法更改里面的txt,英文或数字开头的没有问题
foreach (FileInfo fi in di.GetFiles("*.txt"))
{
fi.MoveTo(Path.Combine(fi.DirectoryName, "李宇春" + fi.Extension));
}
Console.Write(sbdir.ToString()); //这个为了测试时查看路径,没用的
Console.ReadLine();//这个为了测试时查看路径,没用的
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
Console.ReadLine();
}
} static void Main(string[] args)
{
DirSearch(@"e:\mywork"); //设置你硬盘指定的目录 }
}}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;namespace d5
{ class Program
{
static void DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
string sbdir ="@"+"\"" + d + "\""; //这里为了将d改成@"e:\mywork\xxx "的形式 DirectoryInfo di = new DirectoryInfo(sbdir);//这样会出错,显示:路径具有非法字符
// DirectoryInfo di = new DirectoryInfo(@d);这里直接使用@d就不出错。但系对"中文目录"就无法更改里面的txt,英文或数字开头的没有问题
foreach (FileInfo fi in di.GetFiles("*.txt"))
{
fi.MoveTo(Path.Combine(fi.DirectoryName, "李宇春" + fi.Extension));
}
Console.Write(sbdir.ToString()); //这个为了测试时查看路径,没用的
Console.ReadLine();//这个为了测试时查看路径,没用的
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
Console.ReadLine();
}
} static void Main(string[] args)
{
DirSearch(@"e:\mywork"); //设置你硬盘指定的目录 }
}}
解决方案 »
- 关于"用户定义的转换"
- winform page 动态加载用户控件
- 开发winform有前途吗?现在你们的情况是怎么样的?
- 下面的语句能否实现 从发送开始,到接受到 之间的时间间隔若超过100ms ,就触发出错处理??
- 把密码存进DLL文件安全吗?C#又怎样存取密码?
- C#控制IIS之拒绝访问问题,非常急
- DBNull问题,高手指教!
- 在制作安装程序时,我创建了一个用户桌面的快捷方式,可是为何其Target属性只能选择文件夹,我想要选择一个可执行文件,请问大家如何解决
- Winform在线程中怎么让MessageBox显示置顶
- C#发送邮件失败是怎么回事?
- winform 最小化时单击任务栏图标的事件
- c# 链接 mysql类的问题
string sbdir ="\"" + d + "\"";
DirectoryInfo di = new DirectoryInfo(@sbdir);
也是出错如何修改才能在中文目录也能使用?
也就是去掉@的引号