Verzeichnis auflisten

baigox

Mitglied
Also
Ich habe einen Ordner, sagen wir "C:\New_Folder".
nun will ich wissen mit welchen Befehlen ich die Dateien auflisten kann, die in diesem Ordner sind.
Am besten es wird in eine Date geschrieben und vornedrann muss noch die anzahl der dateien stehen!.

ich stell mir dass so vor z.B.:
in dem Orner sind text1.txt, text2.txt, unnamedtext.txt, Baigox.txt und testtext.txt

jetzt will ich dass in der Datei(dessen name und verzeichnes ich kenne) es so aussieht:
Code:
5
text1.txt
text2.txt
unnamedtext.txt
Baigox.txt
testtext.txt
(Hoffentlich verständlich geschrieben)
 
Zuletzt bearbeitet:
Fall es unter Windows sein soll:
C++:
#include <iostream>
#include <dirent.h>
DIR *hdir;
struct dirent *entry;

hdir = opendir(".");
do
{
    entry = readdir(hdir);
    if (entry)
    {
        cout << entry->d_name << endl;
    }
} while (entry);
closedir(hdir);
(Habe einfach mal Copy&Paste gemacht, also musst du es noch etwas abwandeln)
Am besten nimmst du als Container für die Dateien Vektoren.
 
diese Frage war an alle gestellt!
hier der Code wie ich ihn ungebaut habe:
Code:
#include <dirent.h>
#include<windows.h>
#include<fstream>
#include<stdio.h>
#include<iostream>
#include<iomanip>
using namespace std;
int zahler;
DIR *hdir;
struct dirent *entry;
int main(){
DeleteFile(",Liste.txt");
fstream f;
hdir = opendir(".");
do
{
    entry = readdir(hdir);
    if (entry)
    {
        cout << entry->d_name << endl;
        f.open(",Liste.txt",ios::out|ios::app);
        f << entry->d_name << endl;
        f.close();
        zahler++;
    } 
} while (entry);
closedir(hdir);
cout << endl;
fstream g;
DeleteFile(",Anzahl.txt");
g.open(",Anzahl.txt",ios::out);
g << zahler;
system("pause");
}
ich hab das jetzt für dev-cpp umgeschrieben.
kann sein ,dass ich ein paar includes zuviel habe.
ich möchte jetzt wissen was ich machen muss um einen Unterordner zu durchsuchen?
 
Über eine rekursive Funktion. Wenn du nur für Windows programmierst wäre es eigentlich sinnvoller die WinAPI zu verwenden, wie es dir Matthias vorgeschlagen hat.
 
WinAPI?
Ich hab mich jetzt an Dev-Cpp gewöhnt und werde auch nichts anderes nehmen!
also was soll ich ändern?
 
Moin,

das kannst du mit boost sehr einfach erreichen:

Code:
printFiles(string ActualPath, ofstream &out, string path)
{
	boost::filesystem::directory_iterator end_itr;
	for ( boost::filesystem::directory_iterator itr(ActualPath);itr != end_itr;++itr )
	{
		if ( boost::filesystem::is_directory(itr->status()))
		{
			printFiles( itr->path().string(), out, path) ;
		}
		else
		{
				string filenameToPrint = itr->path().string();
				filenameToPrint.erase(0, path.size()); //damit die Pfade relativ sind, wenn du das willst
                out<<filenameToPrint<<"\n";
		}
	}

	}

Die Anzahl der Dateien kannst du einfach ermitteln, wenn du z. B. eine Zeile freilässt, dir von der Funktion oben eine Zahl zurückliefern lässt und diese in die Datei schreibst (in die oberste Zeile).


Gruß,

badday
 
WinAPI?
Ich hab mich jetzt an Dev-Cpp gewöhnt und werde auch nichts anderes nehmen!

Die WinAPI ist das Windows Application Programming Interface. Also einfach alle Windowsspezifischen Funktionen, Klassen, Strukturen, usw. Das hat nichts mit dem IDE zu tun. Dev-C++ ist übrigens absolut nicht empfehlenswert. Der Compiler ist auf dem Stand von vor 5 Jahren.
 
Dev-C++ ist übrigens absolut nicht empfehlenswert. Der Compiler ist auf dem Stand von vor 5 Jahren.
Sehr richtig.

Wenn du dich im Übrigen fragt, wie du an den Anfang der Datei kommst (in die 1. Zeile):
Code:
file.seekg (0, std::ios::beg);

Gruß,

badday
 
Zurück