查找文件夹中的每个文件,重命名并保存

本文关键字:重命名 保存 文件 文件夹 查找 | 更新日期: 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对其进行迭代。