5

我制作了一个搜索程序来搜索计算机中的文件列表,然后将文件复制到存储文件夹中。文件名可以是“*11*2.txt” 只要程序找到这个模式,就应该复制到store文件夹。问题是我在搜索之前不知道文件的确切名称,我不想重命名文件,我不知道如何保存文件。请帮忙

我使用以下内容来查找文件,该文件可以正常工作

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 回答
0

在 vb.net 中,我使用以下代码来查找文件名

Textbox1.Text = New FileInfo(OpenFileDialog.FileName).Name

此代码适用于打开文件对话框

于 2019-12-02T18:28:32.667 回答