3

我无法准确指出导致此错误的原因。我要做的就是在使用代码经过一定时间后将当天创建的文件(pdf)从一个目录复制到另一个目录。这是我的代码:

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
4

1 回答 1

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)

来自 MSDN

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

于 2013-05-16T20:39:30.500 回答