我有一个文件夹:
测试c:\
我正在尝试这段代码:
File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test");我得到了异常:
文件已存在
输出目录肯定存在,输入文件也在那里。
发布于 2011-05-07 20:14:38
您需要将其移动到另一个文件(而不是文件夹),这也可以用于重命名。
移动:
File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test\SomeFile.txt");重命名:
File.Move(@"c:\test\SomeFile.txt", @"c:\test\SomeFile2.txt");在您的示例中显示“文件已存在”的原因是,C:\test\Test尝试创建一个不带扩展名的文件Test,但无法这样做,因为已经存在具有相同名称的文件夹。
发布于 2011-05-07 20:22:51
您需要的是:
if (!File.Exists(@"c:\test\Test\SomeFile.txt")) {
File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test\SomeFile.txt");
}或
if (File.Exists(@"c:\test\Test\SomeFile.txt")) {
File.Delete(@"c:\test\Test\SomeFile.txt");
}
File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test\SomeFile.txt");这将会:
编辑:我应该澄清我的答案,即使它是最受欢迎的!File.Move的第二个参数应该是目标文件,而不是文件夹。您将第二个参数指定为目标文件夹,而不是目标文件名-这是File.Move要求的。因此,您的第二个参数应该是c:\test\Test\SomeFile.txt。
发布于 2017-02-14 19:19:56
就我个人而言,我更喜欢这种方法。这将覆盖目标上的文件,删除源文件,并在复制失败时阻止删除源文件。
string source = @"c:\test\SomeFile.txt";
string destination = @"c:\test\test\SomeFile.txt";
try
{
File.Copy(source, destination, true);
File.Delete(source);
}
catch
{
//some error handling
}https://stackoverflow.com/questions/5920882
复制相似问题