5

コンピューター内のファイルのリストを検索するための検索プログラムを作成し、ファイルをストア フォルダーにコピーします。ファイル名は「*11*2.txt」のようになります。プログラムがこのパターンを見つける限り、ストア フォルダにコピーする必要があります。問題は、検索前にファイルの正確な名前がわからず、ファイルの名前を変更したくないことです。ファイルを保存する方法がわかりません。助けてください

以下を使用して、その作業を行うファイルを見つけます

Public Sub DirSearch(ByVal sDir As String, ByVal FileName As String)
    Dim To_Path As String
    To_Path = Form1.TextBox5.Text
    For Each foundFile As String In My.Computer.FileSystem.GetFiles(sDir, FileIO.SearchOption.SearchAllSubDirectories, FileName)
        Copy2Local(foundFile, To_Path)
    Next
End Sub

これが Copy2Local の現在のバージョンです (注: 正しく動作していません)。

    Public Sub Copy2Local(ByVal Copy_From_Path As String, ByVal Copy_To_Path As String)
    ' Specify the directories you want to manipulate.

    Try
        Dim fs As FileStream = File.Create(Copy_From_Path)
        fs.Close()


        ' Copy the file.
        File.Copy(Copy_From_Path, Copy_To_Path)
    Catch

    End Try
End Sub
4

3 に答える 3

9

最初に、次ToPathのものから来ているため、有効なディレクトリかどうかを確認する必要がありTextBoxます。

Dim isValidDir = Directory.Exists(ToPath)

次に、Path.Combine別の (サブ) ディレクトリまたはファイル名からパスを作成するために使用できます。

Dim copyToDir = Path.GetDirectoryName(Copy_To_Path)
Dim file = Path.GetFileName(Copy_From_Path)
Dim newPath = Path.Combine(copyToDir, file)

http://msdn.microsoft.com/en-us/library/system.io.path.aspx

(免責事項:携帯から入力)

于 2012-09-04T05:57:00.623 に答える
0

あなたの質問に答えるには: Path.GetFileNameでファイル名を取得できます。例:

Dim fileName As String = Path.GetFileName(foundFile)

ただし、コードには他にも多くの問題があります。

  1. ここ、

    Dim fs As FileStream = File.Create(Copy_From_Path)
    fs.Close()
    

    ソースファイル上書きしています。これは良い考えではないようです。;-)

  2. そしてここ、

    Try
        ...
    Catch
        ' Do Nothing
    End Try
    

    問題を見つけて診断するのに役立つ例外を捨てています。そうしないでください。それはデバッグを悪夢にします。

于 2012-09-04T05:50:21.337 に答える