Wie erstelle ich eine Liste von Dateinamen aus einem Ordner in C#
Hab ich ein problem, wenn ich möchte, zum Auffüllen der ein array mit den Dateinamen.
der code ist:
string [] arrays= {};
String sdira= "path of the directory";
foreach (string d in Directory.GetDirectories(sdira))
{
foreach (string f in Directory.GetFiles(d, "*.*"))`enter code here`
{
int j = 0;
array[j++] = path.getfiles(f);
}
}
wenn ich eine Schleife durch array, das array enthält nichts 🙁
so zum füllen des Arrays in diesem Fall?
oder eine bessere Lösung 🙂
- Bitte platzieren Sie code in eine
code
block zu machen, es leichter zu Lesen. Sie können tun, dass durch das Einrücken jede Zeile durch mindestens vier Räume. - Feste der code-Formatierung, jetzt zu überprüfen, das problem...
- Es war
Directory.GetFiles(d, ".")
?? Das könnte auch ein problem verursachen - Ihre Frage-Titel soll den Menschen eine Vorstellung von dem, was Sie Fragen. Behandeln Sie es wie eine tag-Liste ist nicht hilfreich.
- Zu alle wer liest den Beitrag: ich bin traurig über die code-Formatierung, wenn ich verstehe, Vlad korrekt, so muss ich die drücken Sie vier mal die Leerzeichen und geben Sie dann mein code, bitte ich für die Zukunft eine Klarstellung,
- sein Verzeichnis.getfiles(d,.) 🙂
- für die Kennzeichnung als code, alternativ können Sie die code-Abschnitte und drücken Sie die Taste mit dem Bild von 2 geschweiften Klammern
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung gepostet, die auf Ihrem andere Frage. Dadurch entfällt die Schleife um alle
könnte auch
wenn du willst, nur bekommen sagen .jpg (schien angegeben in deiner anderen Frage) die extensionType = ".jpg"
sind Sie zurücksetzen von j auf 0 in der begning jeder iteration der Schleife.
Wie wäre es damit:
Müssen Sie die Länge des Arrays vor dem Befüllen.
In Ihrem Fall, müssen Sie Sie initialisieren die Länge des Arrays auf die Anzahl der Dateien im Verzeichnis.
In Fall, dass Sie wollen, durchsuchen Sie die Verzeichnisse rekursiv, Sie werden besser mit einer Liste statt einem array.
string[] files = Directory.GetFiles(optimizedFiles, "*.txt");
Gegeben, dass Sie nicht wissen, die Größe des array, das Sie verwenden, ich glaube, Sie wäre viel besser mit einer generischen Auflistung wie
List<T>
, d.h.Art von Henne und ei, was hier Los ist, wenn Sie Ihre
arrays
Objekt müssen Sie die Größe des Arrays. Allerdings können Sie nicht tun, dass, bis Sie sah in die Verzeichnisse. Die über die Verzeichnis-Liste zweimal wäre eine schlechte Idee.Ich würde vorschlagen, dass Sie verwenden eine
System.Collections.Generic.List
Objekt als Vermittler, als dies negiert die Notwendigkeit, geben Sie die Größe der ursprünglichen string-array, können Sie dann zu konvertieren, dass Sie zu Ihrem string-array (in der Tat können Sie nicht brauchen, zu tun je nachdem, was Sie app macht mit Ihremarrays
Objekt. Zum Beispiel:EDIT : Aktualisiert code-Beispiel mit einem defensiven Verzeichnis vorhanden ist überprüfen und auch den Abruf von Dateien aus dem base-Verzeichnis:
Diese erhalten alle Dateien im Basis-Verzeichnis und die erste Ebene der Unterverzeichnisse, es wird nicht jedoch die Dateinamen aus der Unterverzeichnisse der Unterverzeichnisse. Zu unterstützen, dass Sie sollten Blick auf eine rekursive Methode.
BEARBEITEN
Hier ist ein Beispiel, die zeigen, wie man diesen rekursiv, und somit alle Dateien aus allen Verzeichnissen, unabhängig davon, Tiefe:
Statt ein array verwenden, sollten Sie besser ein
List<string>
. Das array hat eine Feste Länge haben, aber Sie wissen nicht, die Anzahl der Dateien, bevor Sie die Abfrage alle Verzeichnisse.