查找文件夹中的每个文件,重命名并保存
本文关键字:重命名 保存 文件 文件夹 查找 | 更新日期: 2023-09-27 18:11:40
我在这里有一个简单的foreach,我已经使用folderBrowserDialog
工具获得了文件夹位置,现在我试图通过每个文件并替换文件名中的某些字符。
我得到一个错误,说它找不到文件,当它到达这部分代码File.Move(_FileName, _NewFileName);
有人能解释一下吗?非常感谢。
感谢foreach (FileInfo Files in Folder.GetFiles())
{
_FileName = Files.Name;
_NewFileName = _FileName.Replace(" ", "-").Replace(",", "-");
File.Move(_FileName, _NewFileName);
File.Delete(_FileName);
}
您需要使用Files.FullName
而不是Files.Name
FullName
包括File.Move()
和File.Delete()
需要的完整路径(即C:'test'foo.txt
),而Name
只是文件名本身(即foo.txt
)。
@crashmstr是正确的,你不应该在完整路径上做字符串替换。总之,我可能会这样做:
foreach (FileInfo file in Folder.GetFiles())
{
string originalFileName = file.FullName;
string fileName = file.Name.Replace(" ", "-").Replace(",", "-");
string newFileName = Path.Combine(file.DirectoryName, fileName);
File.Move(originalFileName, newFileName);
}
还要记住,这里不需要File.Delete()
,因为原始文件在移动后将不再存在。
您正在尝试从正在迭代的集合中删除一个项。
您可以将从Folder.GetFiles()获得的文件列表存储到某个变量中,并使用foreach对其进行迭代。