Wie kann ich mit C# in Ordnern nach einer Datei suchen und diese dann anzeigen lassen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Um die Dateinamen in einer ListBox (namens listBox1) anzuzeigen:

using System.IO;


//...


var dirInfo = new DirectoryInfo(path);
var files = new List<FileInfo>();
foreach (ext in String[]{"*.png", "*.jpg", *.jpeg", ...}) {
files.AddRange(dirInfo.EnumerateFiles(ext, SearchOptions.AllDirectories));
};



foreach (var f in files) {
listBox1.Items.Add(f);
};



// die folgende Zeile hineinnehmen, wenn der Name mit vollem Pfad angezeigt werden soll
listBox1.DisplayMember = "FullName";




// die folgende Zeile z. B. in private void Form1_Load()
// Auf das Doppelklickereignis der ListBox reagieren
this.listBox1.DoubleClick += new System.EventHandler(this.listBox1_DoubleClick);




// woanders auf der Form
private void listBox1_DoubleClick(object sender, EventArgs e) {
FileInfo fi = (FileInfo)listBox1.SelectedItem;
if (fi != null) {
// hier fi öffnen oder sonstiges damit anstellen
};
}


Woher ich das weiß:Berufserfahrung – Software-Entwickler

Danke für deine Antwort, allerdings gibt es bei mir einige Fehler zb hier

foreach (ext in String[]{"*.png", "*.jpg", *.jpeg", ...}) {
files.AddRange(dirInfo.EnumerateFiles(ext, SearchOptions.AllDirectories));
};

ich habe das jetzt einfach mal entfernt, allerdings wird nichts angezeigt

string path = "C:";
var dirInfo = new DirectoryInfo(path);
var files = new List<FileInfo>();
foreach (var f in files) {
listBox1.Items.Add(f);
};

das ist der Code den ich übernommen habe um ersteinmal was in der Liste zuhaben. Allerdings findet er nichts

0
@jundo324

Sorry, ich hab hier ein paar Zeilen von Hand abgeschrieben statt zu kopieren und einzufügen.

Es müsste heißen:

foreach (ext in new String[]{"*.png", "*.jpg", *.jpeg", ...}) {
files.AddRange(dirInfo.EnumerateFiles(ext, SearchOptions.AllDirectories));
};

(es wird hier ja ein neues String-Array erzeugt)

Ursprünglich hatte ich

foreach (ext in {"*.png", "*.jpg", *.jpeg", ...}) {
files.AddRange(dirInfo.EnumerateFiles(ext, SearchOptions.AllDirectories));
};

versucht, aber das kriegen nicht alle Versionen von C# hin, warum auch immer.

0

Es ist möglich und auch garnicht so schwer zu realisieren. Es ist einfach ne Art Crawler aber für den privaten PC. Genaue Hilfe kann ich dir jetzt nicht geben aber ich Helfe gern weiter