2012-09-04 31 views
0

我製作搜索程序用於搜索計算機中的文件列表,然後將該文件複製到商店文件夾中。文件名可以是「* 11 * 2.txt」只要程序找到這個模式,它就應該複製到商店文件夾中。問題是,我不知道搜索前的文件的確切名稱,我不想重命名文件,我不知道如何保存文件。請幫助如何在VB中獲取文件的文件名?

我使用以下方法來查找文件,它不工作

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 
+0

@Heinzi感謝您的建議。 VB說它找不到Copy_To_Path。我將Copy_To_Path設置爲文件夾名稱,這是錯誤的。它應該是一個文件名。但是,如果我搜索「* ab * c.txt」,我不知道如何將其設置爲文件名(注意:我想保留程序搜索的內容,換句話說,如果結果是ab1c.txt,我想通過重命名將此文件複製到商店文件夾中)。謝謝 – Marco

回答

2

首先,你應該檢查是否ToPath是一個有效的目錄,因爲它是從一個TextBox來:

Dim isValidDir = Directory.Exists(ToPath) 

其次,你可以使用Path.Combine來創建獨立的(子)目錄或文件的路徑-names:

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

(免責聲明:從手機中輸入)

+0

我給你一個加號。清晰而簡單 – Marco

0

要回答您的問題:您可以使用Path.GetFileName獲取文件名。例如:

Dim fileName As String = Path.GetFileName(foundFile) 

然而,有一堆其他的事情你的代碼錯誤:

  1. 這裏,

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

    overwriting your source file。這似乎不是一個好主意。 ;-)

  2. 這裏,

    Try 
        ... 
    Catch 
        ' Do Nothing 
    End Try 
    

    你扔掉異常,將幫助您找到並診斷問題。不要這樣做。它使調試成爲一場噩夢。

+0

感謝您的建議 – Marco

相關問題