VB.NET Code to search hard drive in background multi-thread

VB.NET Code to search hard drive in background multi-thread:

After many requests from all of you, I have written the requested code in VB.net to do the following:

Pseudo Code: (What will our program do in simple English terminology.)

  • Search ALL hard drives, USB media, etc..
  • Search ALL directories & sub-directories, on ALL hard drives.
  • Place the DRIVE, DIRECTORIES, FILENAME in a memory ARRAY and a text file. Example:
    • C:\FILENAME.EXT
    • C:\WINDOWS\FILENAME.EXT
    • D:\FILENAME.EXT
    • D:\BACKUP\FILENAME.EXT
    • etc…
  • Do this in a way that does not hog system resources. (background process and/or multi threading.)
  • Keep all errors from user and handle on own. (file access issues, errors, etc…)

VB.NET Code to search hard drive in background multi-thread:

To create this project create a VB.NET project with the following:

  • One Form (with name: Form1)
  • One BackgroundWorker (with name: BackgroundWorker1)

Open code window for Form1. Delete all the code. Then paste our code from here, and your program is complete.

.

VB.NET Code to search hard drive in background multi-thread

[vb]

Imports System.ComponentModel
Imports System.IO
Imports System.Threading
Imports Microsoft.VisualBasic.Devices

Public Class Form1

Public path As String = "c:\"
Public fileList As New List(Of String)

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

BackgroundWorker1.RunWorkerAsync()

End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Me.BackColor = Color.Green
End Sub

Sub GetAllAccessibleFiles(path As String, filelist As List(Of String))

For Each file As String In Directory.GetFiles(path, "*.*")
Application.DoEvents()

filelist.Add(file)
Next
For Each dir As String In Directory.GetDirectories(path)
Application.DoEvents()
Try
GetAllAccessibleFiles(dir, filelist)
Catch ex As Exception

End Try
Next
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Application.DoEvents()

For Each drive In DriveInfo.GetDrives
Application.DoEvents()

GetAllAccessibleFiles(drive.ToString, fileList)

‘Convert List to string array if you want
‘Dim files As String() = fileList.ToArray

Next

Application.DoEvents()

Using sw As New System.IO.StreamWriter("c:\filelist.txt")

For Each s As String In fileList
Application.DoEvents()

‘write to file

sw.WriteLine(s)

Next

sw.Flush() ”yeap I’m the sort of nerd that flushes it then closes it, just like my toilet. :-)
sw.Close()
End Using

End Sub
End Class

[/vb]

Connected through code, Choose Your Platform!

About the Author: Bernard Aybout

In the land of bytes and bits, a father of three sits, With a heart for tech and coding kits, in IT he never quits. At Magna's door, he took his stance, in Canada's wide expanse, At Karmax Heavy Stamping - Cosma's dance, he gave his career a chance. With a passion deep for teaching code, to the young minds he showed, The path where digital seeds are sowed, in critical thinking mode. But alas, not all was bright and fair, at Magna's lair, oh despair, Harassment, intimidation, a chilling air, made the workplace hard to bear. Management's maze and morale's dip, made our hero's spirit flip, In a demoralizing grip, his well-being began to slip. So he bid adieu to Magna's scene, from the division not so serene, Yet in tech, his interest keen, continues to inspire and convene.