Dateien auslesen
-
Hallo,
ich benötige eine Möglichkeit, wie ich Dateien in einem Verzeichnis /xxx/xxx, die folgendem Muster entsprechen *xxx* in eine Liste etc. bekomme. Also an stelle 0 die Datei1. Und so weiter. Ich verwende Linux und MacOs. Zur Verfügung steht mir außerdem noch Qt.
Weiß einer eine einfache Möglichkeit, das zu realisieren?
Danke
-
Stringmanipulation und Stringstreams.
-
Kannst du das bitte etwas genauer erläutern. Wie kann ich damit ähnlich ls die Dateien auslesen?
-
Gilbert123 schrieb:
Kannst du das bitte etwas genauer erläutern. Wie kann ich damit ähnlich ls die Dateien auslesen?
Ach, jetzt wird mir erst klar, was du willst! Du willst Dateinamen lesen.
Dann vergiss meinen Ratschlag, der hat überhaupt nichts mit der Lösung zu tun. Zur eigentlichen Lösung: Das ist Betriebssystem abhängig. Da du von ls redest, nehme ich mal an, dass du für ein Unix-artiges System programmierst. Da kannst du mittels in den Systemheadern geeignete Funktionen Datenstrukturen finden, welche genau fragst du am besten im Linux-Subforum.
Es gibt aber auch (mindestens) eine systemübergreifende Bibliothek um mit Dateinamen zu arbeiten: boost::filesystem. Diese Bib benutzt auch die C++ Sprachmittel im Gegensatz zu den Posix-Headern die für C sind. Daher ist dies wahrscheinlich die beste Lösung.
-
So. Also ich habe jetzt das:
path dev( "/dev/" ); if (is_directory(dev)) { directory_iterator end_iter; for (directory_iterator dir_itr(dev); dir_itr != end_iter; ++dir_itr ) { std::cout << dir_itr->path().filename() << endl; } }Das funktioniert. Was mir nciht klar ist. Mit was wird end_iter initialisiert? Funktionieren tut es. Aber End_iter muss doch eig nach der letzten Datei zeigen. Wie wird das gehandhabt? Ich würde die Ergebnisse jetzt in eine Liste schmeißen. Aber wie suche ich dann nach Dateinamen mit *xx*? find bricht ja nach dem ersten Treffer ab.
-
siehe beispiele in der boost filesystem dokumentation
//1. directory_iterator end_itr; // default construction yields past-the-end //2. basic_directory_iterator(); Effects: Constructs the end iterator. //3. for (directory_iterator itr(p); itr!=directory_iterator(); ++itr)Grüße,
Timo
-
Genau das habe ich vor kurzem auch benötigt;-)
Da dir ja Qt zur Verfügung steht, würde ich dir QDir empfehlen.
Schau mal in der Doku von Qt nach, der ließt dir alle Dateinamen von nem Verzeichnis zum Beispiel in de QStringList.Hoffe konnte dir helfen
Falls dus nicht findest, melde dich nochmal kann den Code auch nochma raussuchen:-)
EDIT:
Ok habs einfach ma schnell rausgesucht;-)QDir suche( "C:\Programme" ); suche.setFilter( QDir::Files ); // StringList mit allen Dateinamen aus dem angegeben suchpfad erzeugen QStringList dateien( suche.entryList() );Gruß freeG