我正在将一些图像(文件名为(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.FileNotFoundException
mscorlib.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)
你为什么不使用这样的东西呢?
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)