vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
alle txt Dateien suchen und auflisten 
Autor: Marty**
Datum: 13.02.19 21:16

Hallo,

ich versuche gerade alle txt Dateien in eine Listbox einzutragen

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
  Button1.Click
        For Each foundFile As String In My.Computer.FileSystem.GetFiles(
    My.Computer.FileSystem.SpecialDirectories.MyDocuments,
    Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.txt")
 
            ListBox1.Items.Add(foundFile)
        Next
    End Sub
Leider bekomme ich immer die Fehlermeldung:
Unauthorized Access Exception wurde nicht behandelt.
Wie kann ich den Fehler abfangen ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: Manfred X
Datum: 14.02.19 10:16

Hallo!

Probiere mal ....
Private Sub Getfiles(ByVal Folder As IO.DirectoryInfo,
        ByVal files As List(Of String), errors As List(Of String))
 
        Dim SubFldInf As IO.DirectoryInfo
        Dim FileInf As IO.FileInfo
 
        'alle Dateien des übergebenen Ordners auflisten
        Try
            For Each FileInf In Folder.EnumerateFiles()
                Try
                    files.Add(FileInf.FullName)
                Catch ex As Exception
                    errors.Add(FileInf.FullName)
                End Try
            Next FileInf
 
            'Für jedes Unterverzeichnis erneut rufen ...
            For Each SubFldInf In Folder.EnumerateDirectories()
                Try
                    Getfiles(SubFldInf, files, errors)
                Catch ex As Exception
                    errors.Add(SubFldInf.FullName)
                End Try
            Next SubFldInf
        Catch ex As Exception
            errors.Add(Folder.FullName)
        End Try
End Sub
Anwendung:
Dim files As New List(Of String), errors As New List(Of String)
Dim fld As String = "C:\....."
 
Getfiles(New IO.DirectoryInfo(fld), files, errors)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: Marty**
Datum: 14.02.19 15:43

und wie kann ich jetzt z.B. alle *.txt auflisten der Festplatte C:\ ?

macht noch nicht klick
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: Manfred X
Datum: 14.02.19 17:26

Indem Du einen zusätzlichen Parameter einbaust,
oder die Ergebnisliste filterst

Private Sub Getfiles(ByVal Folder As IO.DirectoryInfo, 
                     ByVal Searchpattern As String,
                     ByVal files As List(Of String), errors As List(Of String))
 
        Dim SubFldInf As IO.DirectoryInfo
        Dim FileInf As IO.FileInfo
 
        'alle Dateien des übergebenen Ordners auflisten
        Try
            For Each FileInf In Folder.EnumerateFiles(Searchpattern)
                Try
                    files.Add(FileInf.FullName)
                Catch ex As Exception
                    errors.Add(FileInf.FullName)
                End Try
            Next FileInf
 
            'Alle untergeordneten Ordner bearbeiten
            For Each SubFldInf In Folder.EnumerateDirectories()
                Try
                    Getfiles(SubFldInf, Searchpattern, files, errors)
                Catch ex As Exception
                    errors.Add(SubFldInf.FullName)
                End Try
            Next SubFldInf
        Catch ex As Exception
            errors.Add(Folder.FullName)
        End Try
End Sub
Anwendung:
Dim files As New List(Of String), errors As New List(Of String)
Dim fld As String = "C:\users"
 
Getfiles(New IO.DirectoryInfo(fld), "*.txt", files, errors)
In "Files" stehen die Dateipfade, in "errors" die Ordner bzw. Dateien,
die für den Zugriff gesperrt sind.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: Marty**
Datum: 14.02.19 20:53

Bekomm es leider nicht gebacken. Könnt ich vielleicht noch a Beispiel haben
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: Manfred X
Datum: 14.02.19 23:11

Ein Windows.Form.Form ....
Die Getfiles-Methode von oben muß ergänzt werden.

Public Class frmFileList
 
    Dim WithEvents btnFolder As New Button With
         {.Parent = Me, .Width = 300, .Text = "Ordner wählen"}
 
    Dim bsFolder As New BindingSource
 
    Dim lboFiles As New ListBox With
         {.Parent = Me, .Width = 400, .Top = 50, .Height = 300,
         .DataSource = bsFolder, .HorizontalScrollbar = True}
 
 
    Dim _folder As String = ""
    Dim _files As New List(Of String)
    Dim _errors As New List(Of String)
 
 
    Private Sub frmFileList_Load(sender As Object, 
                                 e As EventArgs) Handles Me.Load
 
        Me.Size = New Size(420, 400)
        Me.FormBorderStyle = FormBorderStyle.FixedDialog
    End Sub
 
 
    Private Sub btnFolder_Click(sender As Object, 
                                e As EventArgs) Handles btnFolder.Click
 
        Using fbd As New FolderBrowserDialog
            With fbd
                .Description = "Ordner angeben"
                .ShowNewFolderButton = False
                .SelectedPath = _folder
                If .ShowDialog() = DialogResult.Cancel Then Exit Sub
 
                _folder = .SelectedPath
                btnFolder.Text = _folder
 
                _errors.Clear() : _files.Clear()
                Me.Enabled = False
 
                Getfiles(New IO.DirectoryInfo(_folder), "*.txt", 
                                              _files, _errors)
 
                Me.Enabled = True
 
                bsFolder.DataSource = _files
                bsFolder.ResetBindings(False)
            End With
        End Using
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: effeff
Datum: 16.02.19 18:52

Du versuchst, Dateien aufzulisten, die in Scheinordnern liegen...

Siehe https://www.computerbild.de/artikel/cb-Tipps-Software-Windows-Warum-gibt-es-doppelte-Ordner-10706663.html.

Du kannst das z. B. so umgehen:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
 
        Dim StartDir As String = _
          My.Computer.FileSystem.SpecialDirectories.MyDocuments
 
        ListFiles(StartDir)
 
        ListSubDirs(StartDir)
 
    End Sub
 
    Private Function IsJunction(ByVal DirName As String) As Boolean
        Dim dInfo As New System.IO.DirectoryInfo(DirName)
        Dim Attribute As String = dInfo.Attributes.ToString
 
        If Attribute.Contains("ReparsePoint") Then
            Return True
        Else
            Return False
        End If
    End Function
 
    Private Sub ListSubDirs(ByVal DirName As String)
        For Each d As String In System.IO.Directory.GetDirectories(DirName)
            If Not IsJunction(d) Then
                ListFiles(d)
                ListSubDirs(d)
            End If
        Next
    End Sub
 
    Private Sub ListFiles(ByVal DirName As String)
        For Each f As String In System.IO.Directory.GetFiles(DirName)
            ListBox1.Items.Add(f)
        Next
    End Sub
 
End Class

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: Manfred X
Datum: 17.02.19 09:24

Hallo!

Es gibt diverse Gründe, weshalb ein Ordner oder eine Datei
nicht gelistet werden kann, z.B.
- fehlende Zugriffsrechte des Users
- Laufwerk nicht bereit
- Fehler im Dateisystem

In den meisten Fällen kommt man deshalb um eine Ausnahmebehandlung
nicht herum. Den Try--Catch--Block würde ich deshalb ergänzen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: alle txt Dateien suchen und auflisten 
Autor: effeff
Datum: 17.02.19 10:15

Manfred X schrieb:
Zitat:

Es gibt diverse Gründe, weshalb ein Ordner oder eine Datei
nicht gelistet werden kann, z.B.
- fehlende Zugriffsrechte des Users
- Laufwerk nicht bereit
- Fehler im Dateisystem


Im Prinzip schon. Hier geht es aber explizit um den Ordner "My.Computer.FileSystem.SpecialDirectories.MyDocuments", also den Ordner Dokumente eines Users. In diesem liegen die Junctions "Eigene Bilder", "Eigene Videos" und "Eigene Musik", welche ein normales Auflisten von Dateien verhindern, da sie sich zwar wie Ordner geben, aber keine sind. Beim Prüfen der Attribute eines Verzeichnisses auf "ReparsePoint" kann man diese übergehen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel