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.Combinefile変数が絶対パスであることがわかり、パスが追加されません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 から

指定されたパスのいずれかが長さ 0 の文字列である場合、このメソッドはもう一方のパスを返します。path2 に絶対パスが含まれている場合、このメソッドは path2 を返します。

于 2013-05-16T20:39:30.500 に答える