[C#] Dateisystem durchsuchen und auflisten

Memfis

Erfahrenes Mitglied
Also ich hoffe zunächst, dass der Thread hier richtig ist. Bin mir nicht so ganz sicher, aber ich verwende Microsoft Visual Express C# und das gehört ja zu Visual Studio. Von daher sollte das passen, wenn nicht fände ich es nett, wenn ein Mod den Thread verschiebt und nicht löscht.

Ich arbeite an einer kleinen Suchfunktion und möchte das Dateisystem entsprechend durchsuchen. Leider habe ich keine Ahnung, wie das funktioniert und alle Ansätze schlagen gewaltig fehl. Anbei ein Screen, wie das Programm aussieht:

Zur besseren Übersicht, hier die Namen der einzelnen Komponenten:
Die Checkboxen heißen "cWord", "cExcel", "cPowerPoint", "cPDF"
Das Dropdown heißt: "ddLaufwerk"
Das Suchfeld heißt "tSuchbegriff"
Der Button heißt "bSuchen"

Bei "Gefundene Ergebnisse" habe ich ein Pannel drin, welches "pErgebnisse" heißt.
Bei den Ergebnissen will ich eigentlich nur den Namen der gefundenen Dateien und den Pfad haben. Wenn das schonmal funktionieren würde, wäre das schonmal klasse.

An weiteren Verfeinerungen (Beispielsweise ansehnliche Darstellung der Suchergebnisse, sortieren nach Dateinamen, Datei direkt öffnen, Prüfen, welche Dateiformate überhaupt gesucht werden sollen, etc.) kann ich mich dann erst einmal alleine versuchen, aber momentan ist einfach der Punkt erreicht, wo ich rein gar nichts mehr mit dem Programm machen kann, weil einfach noch nichts funktioniert. Immerhin habe schon eine "Beenden"-Funktion und eine "Info"-Box geschafft :D

Wäre super, wenn mir jemand weiter hilft.
 

Anhänge

  • suchen.png
    suchen.png
    5,5 KB · Aufrufe: 84
Zuletzt bearbeitet:
Vielleicht findet sich noch jemand, der bereit ist einem Anfänger kostenfrei zu helfen. Das mit Directory und so hatte ich mir schonmal durchgelesen. Ich sollte noch dazu sagen, dass ich das Programm mal so weit hatte, dass wenigstens Dateien im Root eines Laufwerks gefunden wurden. Weiter ging es dann aber nicht. Leider habe ich den Codeteil verloren, da ich irgendwann frustriert aufgegeben habe und offenbar die aktuellste Version des Programms irgendwann auch gelöscht habe, weil ich dachte, dass ich damit eh nichts mehr mache. Mir ist nur beim PC aufräumen diese alte Version unter die Augen gekommen und dachte, ich probiere es nochmal.

Ich brauche auch keinen vollständigen Code, nur so viel, dass das gesamte Dateisystem durchsucht wird und das Ergebnis ausgegeben wird. Prüfen, ob das Laufwerk überhaupt vorhanden ist, welche Checkbox angekreuzt ist etc. kann ich dann schon selber) Leider ist der Code bei Microsoft auch nicht ausreichend kommentiert. Die Funktion wird zwar im wesentlichen erklärt, aber dann einfach ein Beispiel hingeklatscht mit dem man nicht wirklich was anfangen kann, wenn man wie ich absoluter Anfänger ist. Wenn man mal ein Ergebnis hat kann das alles immer noch verfeinern, probieren etc. und gucken was passiert, nur wenn man rein gar nichts hat ist das natürlich etwas schwerer.
 
Zuletzt bearbeitet:
Mit Directory.GetFiles bekommst du eine Liste mit allen Files in einem Directory.

Vielleicht hilft dir ja folgendes kleines Codeschnipselchen(Kopiert von hier):
[cs]
using System;
using System.IO;

class App
{
public static void Main()
{
// Specify the directory you want to manipulate.
string path = @"c:\";
string searchPattern = "c*";

DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] directories =
di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);

FileInfo[] files =
di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);

Console.WriteLine(
"Directories that begin with the letter \"c\" in {0}", path);
foreach (DirectoryInfo dir in directories)
{
Console.WriteLine(
"{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
}

Console.WriteLine();
Console.WriteLine(
"Files that begin with the letter \"c\" in {0}", path);
foreach (FileInfo file in files)
{
Console.WriteLine(
"{0,-25} {1,25}", file.Name, file.LastWriteTime);
}
} // Main()
} // App()

[/cs]
 
Zuletzt bearbeitet:
Danke, ich gucke was ich damit zusammenbauen kann und würde mich dann hier nochmal melden. Der Codefetzen bezieht sich ja auf ein textbasiertes Konsolenprogramm. Mal sehen, ob ich das übertragen kann. Kannst du mir bitte noch folgende Zeile erklären:
{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
Was bedeuten die Zahlen in den geschweiften Klammern?

Kannst du mir sonnst noch Tipps geben, die ich beim übertragen des Codes beachten sollte?
Console.WriteLine brauche ich jedenfalls nicht, so viel weis ich, weil mein Programm ja eine WindowsForm ist. Ins blaue hinein vermutet muss ich es durch pErgebnisse ersetzen, aber nicht überall, sondern nur beim schlussendlichen Ergebnis, also den Dateinamen die aufgelistet werden sollen.

Echt dumm von mir gewesen das Programm, dass ja doch schon recht "weit" war gelöscht zu haben.
 
Hi,

das schöne am programmieren ist man hat immer verschiedene Arten etwas herauszufinden:

1. Google fragen
2. Ausprobieren (es gibt wirklich nur sehr wenige Fälle in denen man damit etwas Kaputt machen kann)
3. In irgendeinem Forum fragen.

Ich würde sagen probier doch erst mal die ersten beiden Sachen aus, bevor wir zum 3ten Punkt übergehen.
 
Hi

die Zahl vor dem Beistrich ist die Nummer des Parameters.
0 für den ersten, 1 für den zweiten, 2->3 usw...

Die Zahl nach dem Beistrich bestimmt, wieviel Platz die Ausgabe bekommen soll.
Wenn der Parameter zB nur 3 Zeichen hat, man möchte aber (damit zB viele Zeilen genau untereinander sind) den Rest bis zur Länge 25 mit Leerzeichen auffüllen, kann man da 25 reinschreiben.
+/- bestimmt, ob die Leerzeichen rechts oder links zum Rest dazugefügt werden.

@Guselmur: Statt "Code lang=..." gibts hier für jede Sprache ein Tag.
Für C++ cpp, C# sollte cs sein...entsprechend auch das Schlusstag.

C# gehört übrigens in Zukunft in den .NET-Bereich statt C++.
Die Rubrik hier heißt zwar Visual Studio, ist aber nur eine Untergruppe in C++.

Gruß
 
Zurück