Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - ABX -

Visual Basic .NET - Файлы и папки

Все примеры / Файлы и папки

Рекурсивный поиск файлов

Автор: ABX | добавлено: 06.03.2010, 17:52 | просмотров: 4424 (2+) | комментариев: 0 | рейтинг: *x10
Класс реализующий рекурсивный поиск файлов.

Инструкции

Dim x As New FileSearch(New IO.DirectoryInfo("C:Media "), "*.mp3")
x.Search()
MessageBox.Show("Найден о: " & x.Files.Count & " файлов")
MessageBox.Show("Найден о" & x.Directories.Count & " папок")

Код

Option Strict On
Option Explicit On
 
Imports System.IO
 
'*******************************************************************
'Рекурсивный поиск файлов
'http://kbyte.ru
'*******************************************************************
 
Public Class FileSearch
 
  Private Const DefaultFileMask As String = "*.*"
  Private Const DefaultDirectoryMask As String = "*"
 
#Region " Переменные "
 
  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 " Свойства "
 
  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 " Конструктор "
 
  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( _
      Optional ByVal BaseDirectory As DirectoryInfo = Nothing, _
      Optional ByVal FileMask As String = Nothing, _
      Optional ByVal DirectoryMask As String = Nothing)
 
    If Not IsNothing(BaseDirectory) Then
      _InitialDirectory = BaseDirectory
    End If
 
    If IsNothing(_InitialDirectory) Then
      Throw New ArgumentException("Директория не указана!", "Directory")
    End If
 
    If IsNothing(FileMask) Then
      _FileMask = DefaultFileMask
    Else
      _FileMask = FileMask
    End If
 
 
    If IsNothing(DirectoryMask) Then
      _DirectoryMask = DefaultDirectoryMask
    Else
      _DirectoryMask = DirectoryMask
    End If
 
    DoSearch(_InitialDirectory)
  End Sub
 
  Private Sub DoSearch(ByVal BaseDirectory As DirectoryInfo)
 
    Try
      _Files.AddRange(BaseDirectory.GetFiles(_FileMask))
    Catch u As UnauthorizedAccessException
    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
    End Try
  End Sub
 
End Class
Об авторе

ABX

Нет информации об авторе...
ABX
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Люди на Kbyte.Ru
Реклама
Счетчики