Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > список фалов во всех подкаталогах


Автор: Kirill89 1.6.2007, 19:07
Указана папка, мне нужно получить список всех файлов в ней и её подпапках. Как это сделать?

Автор: Kirill89 2.6.2007, 01:20
Извините за лишнее сообщение - решил проблему сам.

Автор: Exception 7.6.2007, 18:37
А поделиться решением?

Автор: Kirill89 7.6.2007, 18:49
Использовал два компонента от vb6 dirlist и filelist
Код

Imports VB = Microsoft.VisualBasic
    Dim CDir1 As Object = New Microsoft.VisualBasic.Compatibility.VB6.DirListBox
    Dim CFile1 As Object = New Microsoft.VisualBasic.Compatibility.VB6.FileListBox
    Dim FFile() as String
    ReDim FFile(0)
Sub FindFiles(ByVal sPattern As String, ByVal CurrDir As String, ByRef sFound() As String)
        try
        Dim i As Short
        Dim sCurrPath As String
        Dim ii As Short
        Dim iLen As Short
        If VB.Right(CurrDir, 1) <> "\" Then
            CDir1.Path = CurrDir & "\"
        Else
            CDir1.Path = CurrDir
        End If
        For i = 0 To CDir1.DirListCount
            If CDir1.DirList(i) <> "" Then
                System.Windows.Forms.Application.DoEvents()
                Call DirWalk(sPattern, CDir1.DirList(i), sFound)
            Else
                If VB.Right(CDir1.Path, 1) = "\" Then
                    sCurrPath = VB.Left(CDir1.Path, Len(CDir1.Path) - 1)
                Else
                    sCurrPath = CDir1.Path
                End If
                CFile1.Path = sCurrPath
                CFile1.Pattern = sPattern
                If CFile1.Items.Count > 0 Then
                    ' нужные файлы найдены в каталоге
                    For ii = 0 To CFile1.Items.Count - 1
                        ReDim Preserve sFound(UBound(sFound) + 1)
                        sFound(UBound(sFound) - 1) = sCurrPath & "\" & CFile1.Items(ii)
                    Next ii
                End If
                iLen = Len(CDir1.Path)
                Do While Mid(CDir1.Path, iLen, 1) <> "\"
                    iLen = iLen - 1
                Loop
                CDir1.Path = Mid(CDir1.Path, 1, iLen)
            End If
            Next i
        Catch
        End Try
    End Sub
FindFiles("*.txt", "C:/", FFile)

Я помоему где-то когдато это нашел... непомню точно, но этот конкретный пример я нашел в одном из старых проектов с vb6.

Автор: Exception 7.6.2007, 19:23
Ну и муть.

Код
Public Function FindFiles (ByVal pattern As String, ByVal dir As String) As String()
    Dim dirInfo As New DirectoryInfo(dir)
    Dim paths As New List(Of String)
    ListFiles (paths, pattern, dirInfo)
    Return paths.ToArray ()
End Sub

Private Sub ListFiles(list As List(Of String), ByVal pattern _
    As String, ByVal dirInfo As DirectoryInfo)

    Dim fsInfos() As FileInfo = dirInfo.GetFiles (pattern)
    For Each fsInfo As FileInfo In fsInfos
        list.Add(fsInfo.FullName)
    Next

    Dim subDirs() As DirectoryInfo = _
        dirInfo.GetDirectories ()
    For Each subDir As DirectoryInfo In subDirs
        ListFiles(list, pattern, subdir)
    Next
End Sub

' ...

Dim found As String() = FindFiles ("*.txt", "C:/")

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)