filesearch.vb

来自「是可以运行的电子光盘 有程序与PPT介绍 对于学习VB。NET的有参考意义」· VB 代码 · 共 113 行

VB
113
字号
Imports Microsoft.VisualBasic
Imports System.io
Public Class FileSearch
    Private Const DefaultFileMask As String = "*.*"
    Private Const DefaultDirectoryMask As String = "*"
#Region " Member Variables "


    Private _InitialDirectory As DirectoryInfo
    Private _DirectoryMask As String
    Private _FileMask As String
    Private _Directories As New ArrayList
    Private _Files As New ArrayList
#End Region
#Region " Properites "

    Public Property InitialDirectory() As DirectoryInfo

        Get
            Return _InitialDirectory
        End Get

        Set(ByVal Value As DirectoryInfo)
            _InitialDirectory = Value
        End Set
    End Property
    Public Property DirectoryMask() As String

        Get
            Return _DirectoryMask
        End Get
        Set(ByVal Value As String)
            _DirectoryMask = Value
        End Set
    End Property
    Public Property FileMask() As String
        Get
            Return _FileMask
        End Get

        Set(ByVal Value As String)

            _FileMask = Value
        End Set
    End Property
    Public ReadOnly Property Directories() As ArrayList
        Get
            Return _Directories
        End Get
    End Property
    Public ReadOnly Property Files() As ArrayList
        Get
            Return _Files
        End Get
    End Property

#End Region
#Region " Constructors "

    Public Sub New()
    End Sub
    Public Sub New(ByVal BaseDirectory As String, Optional ByVal FileMask As String = DefaultFileMask, Optional ByVal DirectoryMask As String = DefaultDirectoryMask)
        Me.New(New IO.DirectoryInfo(BaseDirectory), FileMask, DirectoryMask)
    End Sub
    Public Sub New(ByVal BaseDirectory As DirectoryInfo, Optional ByVal FileMask As String = DefaultFileMask, Optional ByVal DirectoryMask As String = DefaultDirectoryMask)
        _InitialDirectory = BaseDirectory
        _FileMask = FileMask
        _DirectoryMask = DirectoryMask
    End Sub
#End Region
    Protected Overrides Sub Finalize()

        _Files = Nothing
        _Directories = Nothing
        MyBase.Finalize()
    End Sub
    Public Sub Search()
        If Not IsNothing(_InitialDirectory) And _FileMask <> String.Empty And _DirectoryMask <> String.Empty Then
            DoSearch(_InitialDirectory)
        End If

    End Sub
    Public Sub Search(ByVal BaseDirectory As DirectoryInfo, ByVal FileMask As String, ByVal DirectoryMask As String)
        _InitialDirectory = BaseDirectory
        If IsNothing(_InitialDirectory) Then
            Throw New ArgumentException("A Directory Must be specified!", "Directory")
        End If
        _FileMask = FileMask
        _DirectoryMask = DirectoryMask
        DoSearch(_InitialDirectory)
    End Sub
    Private Sub DoSearch(ByVal BaseDirectory As DirectoryInfo)

        Try

            _Files.AddRange(BaseDirectory.GetFiles(_FileMask))
        Catch u As UnauthorizedAccessException
            'Siliently Ignore this error, there isnt any simple                'way to avoid this error.           
        End Try
        Try

            Dim Directories() As DirectoryInfo = BaseDirectory.GetDirectories(_DirectoryMask)
            _Directories.AddRange(Directories)
            For Each di As DirectoryInfo In Directories

                DoSearch(di)
            Next
        Catch u As UnauthorizedAccessException
            'Siliently Ignore this error, there isnt any simple                'way to avoid this error.     
        End Try
    End Sub
End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?