Hallo!
Ich bins mal wieder mit einer neuen Frage und zwar bin ich grad dabei ein Synchronisier-Programm zu programmieren und bin auf ein Problem gestoßen und zar möchte ich alle Dateien (Auch die der Unterverzeichnisse) auflisten, also gehe ich mit einer Schleife alle verzeichnisse durch:
private string[] DateienZählen(string Verzeichnis)
{
string[] Dateien = Directory.GetFiles(Verzeichnis);
string[] UnterOrdner = Directory.GetDirectories(Verzeichnis);
foreach (string dir in UnterOrdner)
{
Dateien += DateienZählen(dir);
}
return Dateien;
}
Zum Verketten habe ich einfach den + Operator genommen, aber dann habe ich festgestellt, dass man damit keine String-Arrys verketten kann.
Kann mir jemand sagen wie ich die zwei String-Arrys verketten kann oder wie man das ganze einfacher schreiben kann?
MFG
Neokil
Habe vor ein paar Tagen die Methode
Strings.Join(string[],String)
als Tipp bekommen.
Der 2.Parameter ist das Trennzeichen zwischen den Strings ...
mfg Hajoseb
P.S. Strings mit >> s << am Ende
**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France
Hallo TheProg,
benutze eine List<string>. Da du sowieso ein dynamisches Wachstum benötigst, sind Arrays hier nicht das Mittel der Wahl.
Falls du am Ende ein Array benötigst, benutze List.ToArray().
Mfg NeuroCoder
Hmm... string.Join(string, string[]) hat zwar eine umgedrehte Signatur aber würde es vermutlich auch tun ohne den VB geraffel.
Hallo,
ich seh das auch wie NeuroCoder => List<String> ist hier die beste Wahl. Als kleinen Tipp noch dazu, überprüfe bei deinem Code, ob das zurückgegebene Array der Funktionen GetFiles/GetDirectories nicht null ist, sonst könnte es einmal krachen wenn du in die foreach gehst!
private List<String> DateienZählen(string Verzeichnis)
{
//hier sollten noch Kontrollen staffinden, ob der "Verzeichnis"-String nicht leer ist und ob das Directory existiert!!!
List<String> erg = new List<String>();
String[] Dateien = Directory.GetFiles(Verzeichnis);
if(Dateien != null && Dateien.Length > 0)
{
foreach(String Datei in Dateien)
{
erg.Add(Datei);
}
}
String[] UnterOrdner = Directory.GetDirectories(Verzeichnis);
if(UnterOrdner != null && UnterOrdner.Length > 0)
{
foreach (string dir in UnterOrdner)
{
List<String> SubDateien = DateienZählen(dir);
if(SubDateien != null && SubDatein.Count > 0)
{
erg.AddRange(SubDateien);//bei der Zeile bin ich mir nicht sicher ob das so geht. hab keinen compiler "zur hand"! sonst musst du dateien einfach wieder per foreach der List adden!
}
}
}
return erg;
}
MfG
Tonka
Hallo tonka,
erg.AddRange(SubDateien);//bei der Zeile bin ich mir nicht sicher ob das so geht. hab keinen compiler "zur hand"! sonst musst du dateien einfach wieder per foreach der List adden!
keine Sorge: List<string>.AddRange ist schon genau das Richtige und die eigentliche Lösung für das Ausgangsproblem.
Hallo Hajoseb,
Strings.Join geht hier an der Sache vorbei, weil ja zwei Collections zu einer Collection zusammengefügt werden sollen und die alle Elemente einer Collection zu einem String zusammengefügt werden sollen.
Hallo jaensen,
wenn man ein String-Array also Ausgangscollection hat und zu einem String zusammenfügen will, ist String.Join sicher besser als Strings.Join. Aber weder String.Join noch Strings.Join sind die Antwort auf das Ausgangsproblem.
herbivore