C#修改文件夹名称,不改变其原来的相对位置?
privatevoidDeNAME(stringSdir)//Sdir为传入的文件夹的路径{DirectoryInfodir=newDirectoryInfo(Sdir)...
private void DeNAME(string Sdir) //Sdir为传入的文件夹的路径
{
DirectoryInfo dir = new DirectoryInfo(Sdir);
string staticString = "(测试☆)";
foreach (FileInfo fi in dir.GetFiles()) //文件夹中文件
{
string FileExtension = fi.Name.Substring(fi.Name.LastIndexOf("."));
if (FileExtension == ".xls" || FileExtension == ".docx" || FileExtension == ".txt" || FileExtension == ".jpg" || FileExtension == ".gif" || FileExtension == ".bmp" || FileExtension == " .ico" || FileExtension == ".jpeg" || FileExtension == ".png")
{
if (fi.Name.IndexOf(staticString) > -1) //判断文件名字中是否含有字符串(测试☆),若含有则更改名字
{
listBox1.Items.Add(dir + "\\" + fi.ToString());
string newName = dir + "\\" + fi.Name.Substring(0, fi.Name.LastIndexOf(".") - 5) + fi.Name.Substring(fi.Name.LastIndexOf("."));
fi.MoveTo(newName);
listBox2.Items.Add(newName);
}
}
}
foreach (DirectoryInfo d in dir.GetDirectories()) //子目录
{
DeNAME(dir.ToString() + "\\" + d.ToString()); //递归调用
}
listBox1.Items.Add(dir);
string folderNewName = dir.Name.Remove ( dir.Name.IndexOf ("(")); ????
Directory.Move(dir.ToString(), folderNewName); ????
listBox2.Items.Add(folderNewName );
}
文件夹新名称folderNewName一直整不对,只是想去掉其名称中的“(测试☆)”字符串,如 文件夹(测试☆)则将其改为 文件夹,但是路径老是出现问题,求解答?分数不太多了,拿出大部分来。
string folderNewName = dir + "\\" + dir.Name.Substring(0, dir.Name.Length - 5);
dir.MoveTo(folderNewName);
这种方法也试过,但老是提示folderNewName被占用。。。 展开
{
DirectoryInfo dir = new DirectoryInfo(Sdir);
string staticString = "(测试☆)";
foreach (FileInfo fi in dir.GetFiles()) //文件夹中文件
{
string FileExtension = fi.Name.Substring(fi.Name.LastIndexOf("."));
if (FileExtension == ".xls" || FileExtension == ".docx" || FileExtension == ".txt" || FileExtension == ".jpg" || FileExtension == ".gif" || FileExtension == ".bmp" || FileExtension == " .ico" || FileExtension == ".jpeg" || FileExtension == ".png")
{
if (fi.Name.IndexOf(staticString) > -1) //判断文件名字中是否含有字符串(测试☆),若含有则更改名字
{
listBox1.Items.Add(dir + "\\" + fi.ToString());
string newName = dir + "\\" + fi.Name.Substring(0, fi.Name.LastIndexOf(".") - 5) + fi.Name.Substring(fi.Name.LastIndexOf("."));
fi.MoveTo(newName);
listBox2.Items.Add(newName);
}
}
}
foreach (DirectoryInfo d in dir.GetDirectories()) //子目录
{
DeNAME(dir.ToString() + "\\" + d.ToString()); //递归调用
}
listBox1.Items.Add(dir);
string folderNewName = dir.Name.Remove ( dir.Name.IndexOf ("(")); ????
Directory.Move(dir.ToString(), folderNewName); ????
listBox2.Items.Add(folderNewName );
}
文件夹新名称folderNewName一直整不对,只是想去掉其名称中的“(测试☆)”字符串,如 文件夹(测试☆)则将其改为 文件夹,但是路径老是出现问题,求解答?分数不太多了,拿出大部分来。
string folderNewName = dir + "\\" + dir.Name.Substring(0, dir.Name.Length - 5);
dir.MoveTo(folderNewName);
这种方法也试过,但老是提示folderNewName被占用。。。 展开
1个回答
展开全部
#region//移动文件夹
public bool movefolder(string SourceFolderName,string TargetFolderName)
{
try
{
Directory.Move(SourceFolderName,TargetFolderName);
return true;
}
catch
{
return false;
}
}
#endregion
需要引入 using System.IO;
C#没有重命名的方法,只能用移动的方法.
如果目标文件夹已经存在,会触发异常.
希望对你有帮助.
public bool movefolder(string SourceFolderName,string TargetFolderName)
{
try
{
Directory.Move(SourceFolderName,TargetFolderName);
return true;
}
catch
{
return false;
}
}
#endregion
需要引入 using System.IO;
C#没有重命名的方法,只能用移动的方法.
如果目标文件夹已经存在,会触发异常.
希望对你有帮助.
更多追问追答
追问
嗯,谢谢你的回答,这种方法我也试过。我的主要疑问是TargetFolderName应该怎么写?
追答
你想把 D:\aa 文件夹改名为 bb ,SourceFolderName= @"d:\aa",TargetFolderName=@"d:\bb"
最好在之前做个验证目标文件夹已经存在.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询