Benutzer mit den meisten Antworten
.txt Dateien in Ordner indizieren

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.
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
-
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.- Bearbeitet Tom Lambert (Koopakiller)Moderator Samstag, 7. Dezember 2013 22:18 Ergänzung
- Als Antwort markiert Bodenseecoder Sonntag, 8. Dezember 2013 11:30
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
-
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.- Bearbeitet Tom Lambert (Koopakiller)Moderator Samstag, 7. Dezember 2013 22:18 Ergänzung
- Als Antwort markiert Bodenseecoder Sonntag, 8. Dezember 2013 11:30