Alle Ordner, Dateien auf c:\ in richtextbox kopieren

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von xd-franky-5.

    Alle Ordner, Dateien auf c:\ in richtextbox kopieren

    Hey Leute ich hätte da mal 2 fragen
    als 1. wie kann ich alle Ordner und Datei -Namen in eine Richtextbox kopieren
    2. wie kann ich Ordner, Dateien in einer listbox oder so anordnen und wie im system also z.b. EIN Ordner Namens
    "Ordner" wenn ich dort einen Doppelkliick mache soll sich der Hinhalt auflisten in der gleichen listbox

    Danke schonmal im vorraus :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xd-franky-5“ ()

    1) Schau dir mal den System.IO-Namespace an - speziell DirectoryInfo.GetFiles bzw .GetDirectories. Damit lassen sich wunderbar Dateien und Ordner auflisten und allerhand Zusatzinformationen sind einsehbar.

    2) Dafür gibt es keine Patentlösung und wird wohl in unglaubliches Gebastel ausarten. Es ist auf einfachem Wege möglich, setzt aber ein gutes Verständnis voraus.

    Der Listbox einfach die Directory- und FileInfos eines Verzeichnises hinzufügen. Wird nun auf eine der Infos Doppelgeklickt, dann musst du prüfen: Handelt es sich um eine FileInfo? Dann passiert nichts. Handelt es sich um eine DirectoryInfo? Dann muss die listbox mit den Dateien/Ordnern der entsprechenden DirecotryInfo geupdatet werden.

    btw gibt es ja fertige Controls die das Übernehmen - einfach mal rechtsklick auf die toolbox und "Element hinzufügen" oder so anklicksen. Bin mir nicht sicher, habe grade kein VS zur hand...
    lg
    Links in der Toolbar in VS ist ein Control namens SaveFileDialog und eines mit dem Namen OpenFolderDialog. Mit Ersterem kannst du eine Datei auswählen, muss aber nicht dringend zum Speichern verwendet werden. Zweiteres gibt dir die Möglichkeit, einen Ordner auswählen zu lassen.

    Wenn ich morgen wieder am PC bin und du dich aus ästethischen Gründen immer noch für dein Konzept interessierst, werde ich dir einen kleinen Lösungsansatz hier posten, damit du weiter kommst, aber dennoch durch eigenständiges Umschreiben/Verwenden etwas dazulernst :)

    So, dauert ganz schön lange so einen Text am iPod Touch zu schreiben :)

    Gute Nacht,

    Darkshadow9
    Ok Danke
    aber nochmal zu 1.
    ich stell mir das so vor dass sich alle Ordner und Dateien in C:\ in einer Richtextbox so aufgelistet werden soll
    Bilder
    • Unbenannt-2.jpg

      41,78 kB, 512×512, 149 mal angesehen
    Das Auflisten ist kein Problem:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. RichTextBox1.Text = GetList("c:\")
    3. End Sub
    4. Public Function GetList(ByVal Root As String) As String
    5. Dim tmp As String = ""
    6. Dim info As New IO.DirectoryInfo(Root)
    7. Dim dicts() As IO.DirectoryInfo = info.GetDirectories
    8. Dim files() As IO.FileInfo = info.GetFiles
    9. For Each d In dicts
    10. tmp &= d.Name & Environment.NewLine
    11. Next
    12. For Each f In files
    13. tmp &= " - " & f.Name & Environment.NewLine
    14. Next
    15. Return tmp
    16. End Function


    Nur anklicken etc ist dann nicht möglich. Erzähl mal, was du genau machen willst. Selten muss man für sowas etwas eigenes programmieren.

    lg
    ah ich will dies als nachricht schicken lassen ;)
    ohhh dieser code lässt keine Dateien Anzeigen nur Ordner und .Bak und .log
    und es sind auch nicht alle Ordner in C:\ und bei fast keinem Ordner ist ein "-" davor
    :((

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „xd-franky-5“ ()

    VB.NET-Quellcode

    1. Dim dicts() As IO.DirectoryInfo = info.GetDirectories("*", IO.SearchOption.AllDirectories)
    2. Dim files() As IO.FileInfo = info.GetFiles("*", IO.SearchOption.AllDirectories)


    WICHTIG: Das listet wirklich ALLE Ordner und Dateien auf - du kannst dir ja vorstellen, wieviele das werden können. Ein Verzeichnis wie C:\ auszulesen kann wird zu Problemen führen.
    Alternativ könntest du dich etwas mit der Materie beschäftigen und eine Funktion schreiben, die nur ein paar Ebenen "tief" sucht. Google mal nach Rekursion (openbook.galileocomputing.de/v…56RekursivesProgrammieren), das könnte hilfreich werden.
    Du kannst ja von jeder DirectoryInfo feststellen lassen, wieviele Unterordner diese behinhaltet. Zurückgegeben wird eine Auflistung von DirectoryInfos - das Spiel kann von neuem beginnen.
    es gibt da so eine eigenschaft namens "Attributes". Das ist eine Enum, die auskunft darüber gibt worum es sich handelt. So kannst du z.B. System-Ordner/Dateien auslassen.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. RichTextBox1.Text = GetList("c:\")
    3. End Sub
    4. Public Function GetList(ByVal Root As String) As String
    5. Dim info As New IO.DirectoryInfo(Root) 'Holt die aktuelle DirectoryInfo
    6. 'Ordern bzw Datei-Liste
    7. Dim dicts As New List(Of IO.DirectoryInfo)
    8. Dim files As New List(Of IO.FileInfo)
    9. 'Fügt nur "Nicht-System-Ordner" in die Ordner-Liste ein
    10. For Each dic In info.GetDirectories
    11. If Not dic.Attributes = (dic.Attributes Or IO.FileAttributes.System) Then
    12. dicts.Add(dic)
    13. End If
    14. Next
    15. 'Fügt ALLE Dateien in die Datei-Liste ein
    16. files.AddRange(info.GetFiles)
    17. 'Schreibt gültige Ordner und Dateien in einen String
    18. Dim tmp As String = ""
    19. For Each d In dicts
    20. tmp &= "DIR : " & d.Name & Environment.NewLine
    21. Next
    22. For Each f In files
    23. tmp &= "FILE: " & f.Name & Environment.NewLine
    24. Next
    25. Return tmp
    26. End Function


    Jezt reicht es aber mit C&P-Code. Erzähl was du machen willst oder bastel selber weiter. MSDN lesen und googlen steht imo auch nicht unter Strafe.
    lg