Hallo.
Ich möchte mir alle Dateien mit den Endungen .jpg .bmp .jpeg .gif zurückgeben lassen.
Das bekomm ich schon nicht hin, aber hinzu kommt noch, ich möchte auch noch die von den unterordnern haben.
EDIT:
Gegooglt hab ich schon, kam aber nie das ich wollte 😦
string[] s = Directory.GetFiles("C:\\temp", "*.xml");
Holt alle xml Dateien aus C:\temp.
Für alle Dateien in den Unterordnern, solltest Du mal nach Rekursion suchen.
@Adler
man das fällt in die rekursive Programmierung !
hier ein ansatz ist nicht der beste schau mir aber mal
"rekursive Programmierung" an!
vieleicht hilft es dir!
string fileName;
string path = @"D:\WebArea\QuadOnly\TSystems";
string extension;
string subextension;
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] fiArr = di.GetFiles();
DirectoryInfo[] diArr = di.GetDirectories();
foreach (FileInfo fri in fiArr){
fileName = path + @"\" + fri.Name;
extension = Path.GetExtension(fri.Name);
if(extension == ".gif"){
Response.Write(fri.Name + "<br>");
}
if(extension == ".jpg"){
Response.Write(fri.Name + "<br>");
}
if (extension == ".bmp") {
Response.Write(fri.Name + "<br>");
}
}
foreach (DirectoryInfo dri in diArr){
DirectoryInfo subdi = new DirectoryInfo(path + @"\"+dri.Name);
FileInfo[] subfiArr = subdi.GetFiles();
foreach (FileInfo subfri in subfiArr)
{
subextension = Path.GetExtension(subfri.Name);
if (subextension == ".gif"){
Response.Write(" " + subfri.Name + "<br>");
}
if (subextension == ".jpg"){
Response.Write(" " + subfri.Name + "<br>");
}
if (subextension == ".bmp"){
Response.Write(" " + subfri.Name + "<br>");
}
}
}
Gruß
Elron
Danke.
Also der Code sieht ja selbstverständlich aus.
Er listet alle Ordner und die Dateien mit bestimmten endungen auf, oder?
Das müsste ja soweit richtig sein.
Wenn ich in den Ordnern auch noch die Dateien haben möchte einfach dafür nochmal das gleiche, aber das bekomm ich schon hin.
Aber was muss ich da für ne Datei einbinden, als Header mein ich jetzt ...
Weil die meisten Variablen bzw. Klassennamen kennt er nicht, der compiler.
@Adler
so mein guter jetzt habe ich mich mit rekursion bzw. rekursiever Prog.
auseinandergesetzt!
ich kann nur sagen das es ganz schön komplex ist zum glück brauch man es
nicht wirklich oft! also nicht von der schreibw. sonder eher was da wirklich passiert!
es ist schon ressourcen fressend bei vielen Dateien bzw. Verzeich.
da er sich alles merkt was noch zum abarbeiten vorliegt!
das Beispiel:
static void Main(string[] args)
{
MyClass walker = new MyClass();
walker.Walk(@"C:\Dokumente und Einstellungen\");
}
public void Walk(string verzeichnis)
{
Console.WriteLine("Walk: " + verzeichnis);
DirectoryInfo dir = new DirectoryInfo(verzeichnis);
foreach(DirectoryInfo subDir in dir.GetDirectories()){
string subDirPath = subDir.FullName;
// Funktion innerhalb der Funktion aufrufen
Walk(subDirPath);
}
}
so, listet alle verzeichnisse innerhalb der String bedingung auf!
jetzt kannst du auch ohne weiteres die FileClasses benutzen um dir nur
bestimme Dateien ausgeben zu lassen!
Gruß
Erlon
Edit:
oder noch kürzer
public void Walk(string verzeichnis)
{
Console.WriteLine("Walk: " + verzeichnis);
DirectoryInfo dir = new DirectoryInfo(verzeichnis);
foreach(DirectoryInfo subDir in dir.GetDirectories()){
// Funktion innerhalb der Funktion aufrufen
Walk(subDir.FullName);
}
}
Hier mir dateien ich hoffe ich konnte dir helfen!
public void Walk(string verzeichnis)
{
Console.WriteLine("Walk: " + verzeichnis);
DirectoryInfo dir = new DirectoryInfo(verzeichnis);
foreach(DirectoryInfo subDir in dir.GetDirectories()){
string subDirPath = subDir.FullName;
foreach (FileInfo file in dir.GetFiles()){
string fileName = file.FullName;
//oder für die Extension
string fileExtension = file.Extension;
//und ob sie existiert
string fileExists= file.Exists;
Console.WriteLine(dirFiles);
}
// Funktion innerhalb der Funktion aufrufen
Walk(subDirPath);
}
}