2017-03-16 121 views
0

在Windows资源管理器,你可以有这样的结构:文件已存在当移动文件

  • 主目录
    • 新目录(a directory)
    • 新目录(a file without an extension)

我结构是:

  • 主目录
    • 新目录(a directory)
    • 一些FILE.TXT

我试图做的是重命名 “有些FILE.TXT” 到“新目录“,就像你可以在资源管理器中。我使用File.Move("/Main Directory/Some File.txt", "/Main Directory/New Directory");

不过,我不断收到一个异常说,当该文件已存在

无法创建文件。

我认为它不喜欢有一个名为“新目录”的目录。但考虑到同名的目录和文件可能共存这一事实,我不明白为什么Move API会对此有所赘述。

有什么方法可以告诉它在复制文件时忽略具有相同名称的目录,反之亦然?

编辑:最近我重新安装了Windows和忘记重新打开文件扩展名,所以我在资源管理器中重命名不修改扩展名像我习惯了这样做。通过扩展名,我无法执行重命名。所以行为实际上是预期的。如果有人在将来做同样的事情,我会在这里留下。

+2

“但是,考虑到目录和文件名称可能共存的事实......”只是错误的:它们不能共存同名,因为目录就像一个文件,但有一些差异。 – zx485

+2

你实际上是否尝试重命名一个文件与文件夹名称相同?我想你会发现你实际上***不能做到这一点。 – Abion47

+0

@ zx485我刚刚意识到我的头脑总是空白,文件扩展名关闭,所以我在资源管理器中重命名并没有修改扩展名。使用扩展名时,我无法执行重命名。 – RareNCool

回答

3

...鉴于目录和文件具有相同的名称可以共存......

这种说法是不正确。容器中的每个对象都必须具有不同的名称。据推测,你的shell被配置为隐藏注册文件类型的扩展,这导致你做出这个错误的陈述。

报告的错误消息是准确的,无需重命名其中一个文件即可避免。

+0

你是对的。请参阅我的编辑。 – RareNCool

+0

从技术上讲,在Windows资源管理器中可能有两个项目具有两个相同的显示名称。 – user2120666

+0

@ user2120666我指的是文件系统,这与'File.Move'很重要。 –