我无法准确找出导致此错误的原因。我试图做的就是将当前创建的文件(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
答案 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)
如果其中一个指定路径是零长度字符串,则此方法 返回另一条路径。如果path2包含绝对路径,则为此 method返回path2。