首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >File.Move不工作-文件已存在

File.Move不工作-文件已存在
EN

Stack Overflow用户
提问于 2011-05-07 20:01:49
回答 9查看 154.2K关注 0票数 89

我有一个文件夹:

测试c:\

我正在尝试这段代码:

代码语言:javascript
复制
File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test");

我得到了异常:

文件已存在

输出目录肯定存在,输入文件也在那里。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-05-07 20:14:38

您需要将其移动到另一个文件(而不是文件夹),这也可以用于重命名。

移动:

代码语言:javascript
复制
File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test\SomeFile.txt");

重命名:

代码语言:javascript
复制
File.Move(@"c:\test\SomeFile.txt", @"c:\test\SomeFile2.txt");

在您的示例中显示“文件已存在”的原因是,C:\test\Test尝试创建一个不带扩展名的文件Test,但无法这样做,因为已经存在具有相同名称的文件夹。

票数 65
EN

Stack Overflow用户

发布于 2011-05-07 20:22:51

您需要的是:

代码语言:javascript
复制
if (!File.Exists(@"c:\test\Test\SomeFile.txt")) {
    File.Move(@"c:\test\SomeFile.txt", @"c:\test\Test\SomeFile.txt");
}

代码语言:javascript
复制
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

票数 148
EN

Stack Overflow用户

发布于 2017-02-14 19:19:56

就我个人而言,我更喜欢这种方法。这将覆盖目标上的文件,删除源文件,并在复制失败时阻止删除源文件。

代码语言:javascript
复制
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
}
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5920882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档