Страница: 1 |
Страница: 1 |
Вопрос: Поиск файлов?
Добавлено: 08.05.05 23:38
Автор вопроса: KOKA
Здавствуйте, извините за обычную проблему!
Как мне осуществить поиск файлов и папок на жестком диске с помощью VB.NET? При этом нужно учитывать такие вещи, как "*.*", или "te?t.tx?"...
Буду очень благодарен!
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #1
Добавлено: 09.05.05 07:53
1. Так же как и везде, способом рекурсии
Вот тебе пример получения размера директории
''' <summary>
''' Получение размера директории
''' </summary>
''' <param name="ResearchDir">Исследуемая директория</param>
''' <returns>Размер директории в байтах</returns>
''' <remarks></remarks>
''' <history>
''' [freeloader] 11.03.2005 Created
''' </history>
'''-----------------------------------------------------------------------------
Private Function szDir(ByVal ResearchDir As String) As Long
Try
Dim arrFiles() As String = System.IO.Directory.GetFiles(ResearchDir)
Dim xSumm As Long
If Not arrFiles.Length = 0 Then
For Each strFile As String In arrFiles
Dim fInfo As New System.IO.FileInfo(strFile)
xSumm += fInfo.Length()
Next
End If
Dim arrDirs() As String = System.IO.Directory.GetDirectories(ResearchDir)
If Not arrDirs.Length = 0 Then
For Each strDir As String In arrDirs
xSumm += szDir(strDir)
sbpStatus.Text = strDir
Next
End If
Return xSumm
Catch ex As Exception
End Try
sbpStatus.Text = ""
End Function
Мог бы и по файлам дать, но там все привязано к ListView от DevExpress
2. Может можно через DirectoryServices ... где то про это слышал...
Номер ответа: 2
Автор ответа:
KOKA
Вопросов: 14
Ответов: 27
Профиль | | #2
Добавлено: 11.05.05 00:16
Большое спасибо за пример, freeloader!
Он очень к мне к стати!
Но, может какая то команда специально существует?
Во всяком случае, я Вам благодарен!
Номер ответа: 3
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #3
Добавлено: 11.05.05 11:49
Незачто
Говорю, посмотри на класс DirectoryServices, я его смотрел, ничего полезного не нашел, может плохо смотрел...
Номер ответа: 4
Автор ответа:
KOKA
Вопросов: 14
Ответов: 27
Профиль | | #4
Добавлено: 23.05.05 01:50
Ребята, вот что я нашел в книге "Рецепты программирования на VB.NET", чудная книга...
Public Class FileSearcher
Private _Matches As New ArrayList
Private _FileFilter As String
Private _Recursive As Boolean
Public ReadOnly Property Matches() As ArrayList
Get
Return _Matches
End Get
End Property
Public Property FileFilter() As String
Get
Return _FileFilter
End Get
Set(ByVal Value As String)
_FileFilter = Value
End Set
End Property
Public Sub New(ByVal FileFilter As String)
Me.FileFilter = FileFilter
End Sub
Public Sub Search(ByVal StartPath As String, ByVal Recursive As Boolean)
_Matches.Clear()
_Recursive = Recursive
SearchDirectory(New System.IO.DirectoryInfo(StartPath))
End Sub
Private Sub SearchDirectory(ByVal Dir As System.IO.DirectoryInfo)
'Get files in current directory
 im FileItem As System.IO.FileInfo
For Each FileItem In Dir.GetFiles(FileFilter)
_Matches.Add(FileItem)
Next
'Processing subdirectory
If _Recursive Then
 im DirItem As System.IO.DirectoryInfo
For Each DirItem In Dir.GetDirectories
Try
'Recursive call
SearchDirectory(DirItem)
Catch err As UnauthorizedAccessException
'If not access to directory then ignore error
End Try
Next
End If
End Sub
End Class
Использовать так:
Private Sub butSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butSearch.Click
Dim Searcher As New FileSearcher("*.txt"
Dim File As System.IO.FileInfo
Searcher.Search(":\", True)
For Each File In Searcher.Matches
LProcess.Text = File.FullName
Next
End Sub