在C#中移动文件

MKS*_*MKS 18 c# file move

我正在将一些图像(文件名为(1).PNG,(2).PNG等)从一个目录移动到另一个目录.我使用以下代码:

for (int i = 1; i < n; i++)
{
    try
    {
        from = "E:\\vid\\(" + i + ").PNG";
        to = "E:\\ConvertedFiles\\" + i + ".png";

        File.Move(from, to); // Try to move
        Console.WriteLine("Moved"); // Success
    }
    catch (IOException ex)
    {
        Console.WriteLine(ex); // Write error
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

System.IO.FileNotFoundExceptionmscorlib.dll中出现类型的第一次机会异常

System.IO.FileNotFoundException: Could not find file 'E:\vid\(1).PNG'.
Run Code Online (Sandbox Code Playgroud)

另外,我打算重命名文件,以便转换后的文件名为00001.png,00002.png ... 00101,依此类推.

Tob*_*bon 22

我建议你使用'@'以更可读的方式逃避斜杠.还可以使用它Path.Combine(...)来连接路径并将PadLeft文件名作为您的具体信息.

for (int i = 1; i < n; i++)
{
    try
    {
        from = System.IO.Path.Combine(@"E:\vid\","(" + i.ToString() + ").PNG");
        to = System.IO.Path.Combine(@"E:\ConvertedFiles\",i.ToString().PadLeft(6,'0') + ".png");

        File.Move(from, to); // Try to move
        Console.WriteLine("Moved"); // Success
    }
    catch (IOException ex)
    {
        Console.WriteLine(ex); // Write error
    }
}
Run Code Online (Sandbox Code Playgroud)


Key*_*ner 5

你为什么不使用这样的东西呢?

var folder = new DirectoryInfo(@"E:\vid\"));

if (folder.Exists)
{
    var files = folder.GetFiles(".png");
    files.toList().ForEach(f=>File.Move(from,to));
}
Run Code Online (Sandbox Code Playgroud)