Laden...

Dateien mit Platzhalter "*" suchen

Erstellt von Daneu vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.240 Views
D
Daneu Themenstarter:in
20 Beiträge seit 2007
vor 17 Jahren
Dateien mit Platzhalter "*" suchen

Hallo Leute,
ich möchte gerne in einem Ordner nach einer *.txt Datei suchen. So gehts ja offensichtlich nicht:


if (File.Exists(Application.StartupPath + @"\Data\*.txt"))
     do something

In msdn2 mit dem RessourceManager bin ich auch nicht weitergekommen.
Wie funktionierts dann?

Schöne Grüße
Daneu

F
722 Beiträge seit 2005
vor 17 Jahren

hallo,

File.Exists ermittelt nur, ob eine Datei existiert oder nicht.
Nimm Directory.GetFiles() um mit wildcards zu suchen.

D
Daneu Themenstarter:in
20 Beiträge seit 2007
vor 17 Jahren
Dateien mit Wildcard löschen

Ok, also um präziser zu werden:
Ich möchte aus einem Ordner eine einzige txt Datei löschen, deren Name ich nicht kenne (außer der Extension). Meine Lösung sieht folgendermaßen aus:


                string[] arrAllFiles = Directory.GetFiles(Application.StartupPath + @"\Temp");
                foreach (string str in arrAllFiles)
                {
                    if (Path.GetExtension(str) == "txt")
                        File.Delete(str);
                }

Gibt es nicht eine schnellere Lösung, wo ich ohne Verwendung einer Schleife eine Datei unter Zuhilfenahme eines wildcard aus einem Ordner löschen kann?

Schöne Grüße
Daneu

R
494 Beiträge seit 2006
vor 17 Jahren

Wie schnell ist die Lösung mit der Schleife denn?

F
722 Beiträge seit 2005
vor 17 Jahren

mit deinem code löscht du aber alle .txt dateien in dem ordner.
die wildcard kann wie gesagt der GetFiles() Methode übergeben werden:


string[] arrAllFiles = Directory.GetFiles(Application.StartupPath + @"\Temp", *.txt");
                foreach (string str in arrAllFiles)
                {
                  File.Delete(str);
                }

ob das allerdings schneller ist bezweifle ich. =)

B
1.529 Beiträge seit 2006
vor 17 Jahren

@feadur:

ob das allerdings schneller ist bezweifle ich.

Schneller ist es mit Sicherheit. Ob das allerdings in einem spürbaren Rahmen liegt, möchte ich bezweifeln.

@Daneu:

  1. Dein Programm erstellt die Datei doch. Dann sollte es doch wohl auch in der Lage sein, sich den Dateinamen zu merken.

  2. Wieso erzeugst du temporäre Dateien unterhalb des Installationsordners?
    Das funktioniert schon unter XP nur als Admin, unter Vista nicht mal dann.
    Merke: niemals in das Anwendungsverzeichnis schreiben.
    Um den korrekten Pfad für Anwendungsdaten zu erhalten nutze Environment.GetSpecialFolder().

D
Daneu Themenstarter:in
20 Beiträge seit 2007
vor 17 Jahren

also die Schleife ist für die 20-30 Dateien, die sich im Ordner befinden, natürlich mehr als schnell genug. Das geht blitzschnell 😁

Da mein Programm aber generell sehr langsam ist, versuche ich halt den code wo auch immer es geht auf Schnelligkeit zu trimmen.

Den Lösungsweg von feadur habe ich jetzt verstanden und werde ihn übernehmen. Danke.

@ Borg: Mein Programm erstellt die Datei nicht sondern weiß nur, daß eine Datei mit .txt im Ordner x existiert. Danke für Deinen Hinweis mit dem Temporärordner. Dann werde ich mich nun damit auseinandersetzen. Diese wichtigen Tips findet man leider in keinem Lehrbuch. Ich sollte mich doch öfter an das Forum wenden 🙂