【问题标题】:Weird IOexception for file.movefile.move 的奇怪 IO 异常
【发布时间】:2015-06-21 16:11:32
【问题描述】:

我编写了一个程序,该程序应该将文件复制并备份到两个文件夹 EditedArchived 分别。我检查了我的目录,它们存在,并且据我所知输入正确,我将它们排除在外以保持简短。

    If TxtDest.Text <> "" Then
        File.Copy(oFD.FileName, <Copy Destination>)
    End If
    File.Move(oFD.FileName, <Archive Destination>)

    MsgBox("Your file has been saved.", MsgBoxStyle.OkOnly, "")

我已成功复制文件,但移动一直给我带来问题。当它执行时,我得到一个 IOException:“当该文件已存在时无法创建文件。”有没有人知道为什么会发生这种情况或知道解决异常的方法?

谢谢!

【问题讨论】:

  • 有错误说明一切!转到该路径,那里已经有一个文件exists。我敢打赌,如果您将其删除并重试,它将起作用...要解决此问题,只需检查文件是否存在,如果不移动文件...
  • 您忘记了 File.Delete()。您可能应该考虑一下您是真的想要这样做还是遇到了“存档”组织错误。

标签: vb.net file ioexception


【解决方案1】:

事实证明,文件路径不完整。

我已经包含了目标文件夹,但忽略了文件名。见下文:

曾经: "H:\AppDev\Visual Studio 2010\Projects\RawFixerTest1\Test Data for RawFixer\5820\Survey\FieldWrk\TDS\Archived\"

是: "H:\AppDev\Visual Studio 2010\Projects\RawFixerTest1\Test Data for RawFixer\5820\Survey\FieldWrk\TDS\Archived\" &amp; fInfo.Name

finfo 是一个文件信息对象。

【讨论】:

    【解决方案2】:

    如果您阅读了File.Copy method 上的文档。

    Copy(String, String) 将现有文件复制到新文件。 不允许覆盖同名文件。

    Copy(String, String, Boolean) 将现有文件复制到新文件。允许覆盖同名文件。

    所以如果一个文件已经存在于那个位置,你需要使用第二个重载,为最后一个参数指定 True 来强制覆盖它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多