C
#include <iostream>
#include <string>
#include <Windows.h>
#include <list>
#include <vector>
using namespace std;
struct FileInfo
{
enum Type {DIR, FILE, INVALID};
FileInfo(const char* name, Type t) : filename(name),type(t) {};
FileInfo(const FileInfo& rhs)
{
*this=rhs;
}
~FileInfo() { }
FileInfo& operator=(const FileInfo& rhs)
{
filename = rhs.filename;
type=rhs.type;
return *this;
}
Type type;
string filename;
};
bool GetDir(const char* name, vector<FileInfo>& v, bool subfolders = false)
{
WIN32_FIND_DATA data;
string dir = name;
dir+="/*";
HANDLE hdl=FindFirstFile(dir.c_str(), &data);
if(hdl==INVALID_HANDLE_VALUE)
return false;
do
{
if(!((data.cFileName[0]=='.') && ( (data.cFileName[1]=='.' && data.cFileName[2]==0) || data.cFileName[1]==0)))
{
string path = name;
path+='\\';
path+=data.cFileName;
if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
v.push_back(FileInfo(path.c_str(), FileInfo::DIR));
if(subfolders)
{
string dir = name;
dir+='\\';
dir+=data.cFileName;
GetDir(dir.c_str(), v, true); // rekursiv aufrufen
}
}
else
{
v.push_back(FileInfo(path.c_str(), FileInfo::FILE));
}
}
}while(FindNextFile(hdl,&data));
FindClose(hdl);
return true;
}
int main()
{
vector<FileInfo> files;
GetDir("C:\\Josh\\kaka",files,false);
for(vector<FileInfo>::const_iterator i=files.begin(),end=files.end();i!=end;++i)
{
cout << i->filename << endl;
}
return 0;
}
Leider beendet sich das programm von selbst ^^
ich hab sehr warscheinlich einen Fehler gemacht aber das lerner ich noch