Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Поиск файлов? Добавлено: 08.05.05 23:38  

Автор вопроса:  KOKA
Здавствуйте, извините за обычную проблему!
Как мне осуществить поиск файлов и папок на жестком диске с помощью VB.NET? При этом нужно учитывать такие вещи, как "*.*", или "te?t.tx?"...
Буду очень благодарен!

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #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-сайт: freeloader.folder-pro.net
 Профиль | | #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
        ;Dim FileItem As System.IO.FileInfo
        For Each FileItem In Dir.GetFiles(FileFilter)
            _Matches.Add(FileItem)
        Next

        'Processing subdirectory
        If _Recursive Then
            ;Dim 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(";D:\", True)
For Each File In Searcher.Matches
LProcess.Text = File.FullName
Next
End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам