我试图找到一种方法来读取目录中的特定文件名,然后将文件名放入变量中。在我的程序中,我有一个批处理文件,它会压缩一个名为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
答案 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