读取文件名并将其放入变量中

时间:2015-03-12 20:39:13

标签: vb.net

我试图找到一种方法来读取目录中的特定文件名,然后将文件名放入变量中。在我的程序中,我有一个批处理文件,它会压缩一个名为logs的文件夹,然后将zip的名称更改为username_date_time.zip。

所以基本上如果文件名是 jobs_03152015_1315.zip ,我想要整个文件名,但不是存储在变量中的路径。该文件从用户的本地计算机开始。然后将其上载到网络共享中。

网络路径将上传到数据库供其他人查看。我想将唯一的文件名添加到预设路径的末尾。这是我正在使用的代码。

Dim filePath As String = "c:\temp\logs\"

If (System.IO.Directory.Exists(filePath)) Then

    For Each file As String In filePath
        If file.Contains(".zip") Then
            Dim zip As String = file
            testbox.Text = zip
            Exit For
        End If
    Next
End If

3 个答案:

答案 0 :(得分:1)

您可以使用静态(在VB中共享)GetFiles()类的Directory方法枚举所有文件,请参阅msdn

假设您有超过1个文件,我将文件添加到列表框控件中。但如果你愿意,你可以改变它。我使用Path class获取文件名。您将在本课程中找到许多其他有用的功能。

 Dim searchPath = "C:\temp\logs"

 Dim files = Directory.GetFiles(path, "*.zip")

 For Each file In files
     listbox1.Items.Add(path.GetFileName(file))
 Next

这应该这样做。

答案 1 :(得分:1)

你的循环没有读任何东西。字符串变量filePath只是目录的名称,而不是该目录中文件的列表。在字符串上调用每个字符只需枚举字符串

中包含的每个字符

要获取该文件夹中包含的文件列表,您需要Directory.EnumerateFiles()并传递filePath变量和所需的扩展名。

您似乎只想查找该文件夹是否包含至少一个带zip扩展名的文件。如果是这种情况,那么你可以删除显式循环并简单地写

 Dim file = Directory.EnumerateFiles(filePath, "*.zip").FirstOrDefault()
 If file IsNot Nothing Then
    testbox.Text = Path.GetFileName(file)
 End If

使用Path.GetFileName将只返回没有路径部分的文件

答案 2 :(得分:-1)

试试这段代码:

Dim FilePath As String = "c:\temp\logs\"
    If (System.IO.Directory.Exists(FilePath)) Then
        For Each File As String In System.IO.Directory.EnumerateFiles(FilePath)
            If File.Contains(".zip") Then
                Dim info As New System.IO.FileInfo(File)
                zip = info.Name
                testbox.Text = zip
                Exit For
            End If
        Next
    End If