C# 在C中移动文件#
我正在将一些图像(文件名是C# 在C中移动文件#,c#,file,move,C#,File,Move,我正在将一些图像(文件名是(1).PNG,(2).PNG等等)从一个目录移动到另一个目录。我正在使用以下代码: for(int i=1;i
(1).PNG
,(2).PNG
等等)从一个目录移动到另一个目录。我正在使用以下代码:
for(int i=1;i
但是,我得到以下错误:
mscorlib.dll中发生了类型为System.IO.FileNotFoundException
的首次意外异常
System.IO.FileNotFoundException:找不到文件“E:\vid\(1.PNG”。
此外,我还计划重命名这些文件,以便转换后的文件名为
00001.png
,00002.png
00101.png
等等 异常意味着文件E:\vid(1).PNG
不存在。你是说E:\vid1.PNG
使用System.IO.Path
类来构造路径,这比串联字符串要好。你不必担心逃避反斜杠
i.ToString()
也许对你有帮助。你通过了
from = "E:\\vid\\(" + i + ").PNG";
to = "E:\\ConvertedFiles\\" + i + ".png";
I为整数,因此串联不起作用不要使用
\\
,而是像这样添加@
from = @"E:\vid\(" + i + ").PNG";
我建议您使用
“@”
,以便以更可读的方式避开斜杠。还可以使用Path.combined(…)
来连接路径,并使用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
}
}
for(int i=1;i
为什么不使用这样的东西
var folder = new DirectoryInfo(@"E:\vid\"));
if (folder.Exists)
{
var files = folder.GetFiles(".png");
files.toList().ForEach(f=>File.Move(from,to));
}
我刚刚在VisualStudio中运行了这个。成功了
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main()
{
int n = 3;
for (int i = 1; i < n; i++)
{
string from = "C:\\vid\\(" + i + ").PNG";
string to = "C:\\ConvertedFiles\\" + i + ".png";
{
try
{
File.Move(from, to); // Try to move
Console.WriteLine("Moved"); // Success
}
catch (System.IO.FileNotFoundException e)
{
Console.WriteLine(e); // Write error
}
}
}
}
}
}
使用系统;
使用System.IO;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
命名空间控制台应用程序2
{
班级计划
{
静态void Main()
{
int n=3;
对于(int i=1;i
也许当您将文件移动到vid目录以开始测试时,windows删除了括号。(1) .png变为1.png。。。我得到了一个文件找不到错误的现象。。。否则,您的代码是可靠的。我的版本几乎相同
var folder = new DirectoryInfo(sourcefolder);
if (folder.Exists)
{
var files = folder.GetFiles("*.png");
files.ToList().ForEach(f => File.Move(sourcefolder + f, newFolderName + f));
}
我相信这会有帮助。愚蠢的问题,但是你确定“E:\vid(1).PNG”存在吗?
找不到文件“E:\vid(1).PNG”
但是你的代码说E:\\vid\\\(1).PNG
-所以这里的某个地方缺少一个斜线,不是吗?有问题:你的代码希望文件名为(\u num).png
并驻留在E:\vid
目录中。错误消息表示您正试图“查找”E:\`目录中的文件vid(\u num).png
。因此,错误消息和代码不匹配。请确保您发布了匹配的实际代码和错误消息。上面的代码有错误吗?您试图移动的文件名为(1).png
,位于文件夹E:\vid
中,而不是E:\vid(1).png
。哪个是正确的?ToString()
在与字符串连接时被隐式调用。如果这是问题所在,他的代码甚至无法编译。