VB - 由于“被另一个进程使用”错误而无法复制文件

时间:2013-05-16 20:17:42

标签: vb.net

我无法准确找出导致此错误的原因。我试图做的就是将当前创建的文件(pdfs)从一个目录复制到另一个目录后,在一段时间后使用自动收报机。这是我的代码:

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

    Dim file As String
    Dim now As String = DateTime.Today.ToShortDateString
    Dim dir As String = "C:\PDFs\"
    Dim bupdir As String = "C:\PDFs\copied\"
    Dim Files() As String = Directory.GetFiles(dir)

    For Each file In Files
        Dim dt As String = IO.File.GetLastWriteTime(file).ToShortDateString
        If dt = now Then
            IO.File.Copy(Path.Combine(dir, file), Path.Combine(bupdir, file), True)
        End If
    Next

End Sub

1 个答案:

答案 0 :(得分:4)

你的问题在于Directory.GetFiles()返回源目录中文件的完整路径名。

然后,当您尝试构建目标文件名时,Path.Combine会发现您的file变量是绝对路径,并且不会添加路径bupdir
这会返回变量file的值,最终会得到类似的结果

IO.File.Copy("C:\PDFs\file.pdf", "C:\PDFs\file.pdf", True)

解决问题

IO.File.Copy(file, Path.Combine(bupdir, Path.GetFileName(file)), True)

FROM MSDN

  

如果其中一个指定路径是零长度字符串,则此方法   返回另一条路径。如果path2包含绝对路径,则为此   method返回path2。

相关问题