none
.txt Dateien in Ordner indizieren RRS feed

  • Frage

  • Hallo liebe Forumgemeinde,

    ich benötige dringen eure Hilfe. Ich programmiere schon seit einiger Zeit ein paar kleinere Tools in VB.NET.

    In meinem aktuellen Projekt muss ich die Namen aller in einem Ordner enthaltenen *.txt Dateien auslesen und wiederum

    in eine .txt Datei schreiben. Wie das schreiben geht weiß ich schon, habe schon ein bisschen mit der System.IO rumgebastelt.

    Doch an der abfrage der Dateinamen hapert es.

    Ich bin euch für jede Antwort dankbar!

    Doch bitte wenn möglich einfacher Code, den auch ein ziemlicher Anfänger wie ich verstehen kann.

    Samstag, 7. Dezember 2013 21:58

Antworten

  • Hi,

    meinst du so was hier?

            Dim di As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath)
            For Each rs In di.GetFiles("*.txt")
                MsgBox(rs.Name)
            Next
    

    Gruß
    Andy

    • Als Antwort markiert Bodenseecoder Sonntag, 8. Dezember 2013 11:30
    Samstag, 7. Dezember 2013 22:03
  • Hallo,
    die Directory.GetFiles-Methode liefert dir ein Array von Dateinamen. Der 1. Parameter ist der Ordnerpfad und der 2. ist das Suchmuster:

    Dim files As String() = Directory.GetFiles("C:\Mein Ordner\", "*.txt")
    Nun weiß ich nicht wie die Indizierung genau geschehen soll. Wenn du nur eine Liste in der Zieldatei haben willst, dann kannst du das Array gleich wieder speichern:
    File.WriteAllLines("C:\Dateien in Mein Ordner.txt", files)
    Ansonsten kannst du die Dateien auch in einer Schleife durchgehen und einzelnen schreiben. Nachfolgend über einen StreamWriter. Es werden der Dateiname sowie die Dateigröße hinein geschrieben. Das in einem tabellarischem Format.
    Using sw As New StreamWriter("C:\Dateien in Mein Ordner.txt") 'Schließt den Stream am Ende automatisch, auch im Fehlerfall
        sw.WriteLine("Dateigröße | Dateipfad") 'Titel
        For Each File In files 'Alle Dateien durch gehen
            Dim fi As New FileInfo(File) 'Zur ermittlung der Dateigröße
            sw.Write(fi.Length.ToString().PadLeft(10, " "c)) 'Dateigröße in String wandeln und von Links mit Leerzeichen auf eine Feste breite bringen
            sw.Write(" | ") 'Trennzeichen
            sw.WriteLine(File) 'Der Dateiname
        Next
    End Using

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Samstag, 7. Dezember 2013 22:04
    Moderator

Alle Antworten

  • Hi,

    meinst du so was hier?

            Dim di As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath)
            For Each rs In di.GetFiles("*.txt")
                MsgBox(rs.Name)
            Next
    

    Gruß
    Andy

    • Als Antwort markiert Bodenseecoder Sonntag, 8. Dezember 2013 11:30
    Samstag, 7. Dezember 2013 22:03
  • Hallo,
    die Directory.GetFiles-Methode liefert dir ein Array von Dateinamen. Der 1. Parameter ist der Ordnerpfad und der 2. ist das Suchmuster:

    Dim files As String() = Directory.GetFiles("C:\Mein Ordner\", "*.txt")
    Nun weiß ich nicht wie die Indizierung genau geschehen soll. Wenn du nur eine Liste in der Zieldatei haben willst, dann kannst du das Array gleich wieder speichern:
    File.WriteAllLines("C:\Dateien in Mein Ordner.txt", files)
    Ansonsten kannst du die Dateien auch in einer Schleife durchgehen und einzelnen schreiben. Nachfolgend über einen StreamWriter. Es werden der Dateiname sowie die Dateigröße hinein geschrieben. Das in einem tabellarischem Format.
    Using sw As New StreamWriter("C:\Dateien in Mein Ordner.txt") 'Schließt den Stream am Ende automatisch, auch im Fehlerfall
        sw.WriteLine("Dateigröße | Dateipfad") 'Titel
        For Each File In files 'Alle Dateien durch gehen
            Dim fi As New FileInfo(File) 'Zur ermittlung der Dateigröße
            sw.Write(fi.Length.ToString().PadLeft(10, " "c)) 'Dateigröße in String wandeln und von Links mit Leerzeichen auf eine Feste breite bringen
            sw.Write(" | ") 'Trennzeichen
            sw.WriteLine(File) 'Der Dateiname
        Next
    End Using

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Samstag, 7. Dezember 2013 22:04
    Moderator
  • Vielen Dank!!

    Das ist genau das ,was ich gesucht habe!!

    Bis Bald,

    Dark Nerv

    Sonntag, 8. Dezember 2013 11:31