foreach文件夹,重命名并保存

Cec*_*ore 2 .net c# foreach

我在这里有一个简单的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);

            }
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 12

您需要使用Files.FullNameFiles.Name

FullName包括全路径(即C:\test\foo.txt这是由需要)File.Move()File.Delete()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);
}
Run Code Online (Sandbox Code Playgroud)

File.Delete()此处也不需要记住,因为移动后原始文件将不再存在.