我想列出计算机中所有驱动器中的所有JPG文件,并显示完整路径。 所以我尝试了下面的代码,但它只列出了几个随机文件,它不会搜索所有文件。我从这里得到了这个:Searching a drive with vb.net
Public Sub DirSearch(ByVal sDir As String)
Dim fl As String
Try
For Each dir As String In Directory.GetDirectories(sDir)
For Each fl In Directory.GetFiles(dir, "*.jpg")
listbox1.Items.Add(fl)
Next
DirSearch(dir)
Next
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub
'form1加载事件
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DirSearch("c:\")
DirSearch("d:\")
DirSearch("e:\")
DirSearch("f:\")
DirSearch("g:\")
DirSearch("h:\")
DirSearch("i:\")
DirSearch("j:\")
DirSearch("k:\")
'DirSearch("so on.....")
savetxtfile()
End Sub
将搜索结果保存到系统驱动器中的文本文件
Sub savetxtfile()
Dim systemdrv As String = Mid(Environment.GetFolderPath(Environment.SpecialFolder.System), 1, 3)
TextBox1.Text = listbox1.Items.Count
Dim w As IO.StreamWriter
Dim r As IO.StreamReader
Dim i As Integer
w = New IO.StreamWriter(systemdrv + "temp\test.txt")
For i = 0 To listbox1.Items.Count - 1
w.WriteLine(listbox1.Items.Item(i))
Next
w.Close()
End Sub
答案 0 :(得分:0)
你忽略了你的例外......
Debug.WriteLine(ex.Message)
请改用它(所以你不能错过调试)......
MessageBox.Show(ex.Message)
知道发生了什么可能是文件夹访问错误,您需要相应地处理它。
For Each dir As String In Directory.GetDirectories(sDir)
Try
For Each fl In Directory.GetFiles(dir, "*.jpg")
lstbxTest.Items.Add(fl)
Next
Catch ex As Exception
Continue For
End Try
Next
有效的是,如果你收到错误就继续,因为你在这种情况下并不在意。
您可能希望在其中添加一些例外(如果dir =“whatever”,然后继续),这样您就不会尝试浏览操作系统中的每个系统文件夹。