Scan directory! alle filenamen von einem Pfad und deren Unterordnern
-
hallo!
Ich hoffe mir kann jemand helfen, ich schreibe in einer txt file alle filennamen eines angegeben Pfades
Mein Problem ist, dass nur der erste Unterordner durchsucht wird und dann komme ich nicht wieder hoch ins hauptverzeichnis!!
Was habe ich falsch gemacht? Oder wie kann ich dieses Problem aufheben, dass ich wirklich alle filenamen des gesamten Verzeichnisses habe (Ordnernamen moechte ich nicht wissen)!
desweiteren wie bekomme ich die filesize noch dazu?
Programm in VS.Net in C fuer Windows!int ScanDir(char *dirname, int indent) { // Get the proper directory path sprintf(szDir, "%s\\*", dirname); // Get the first file hList = FindFirstFile(szDir, &FileData); if (hList == INVALID_HANDLE_VALUE) { printf("No exsisting folder! Please again!\n\n"); return (1); } else { // Traverse through the directory structure fFinished = FALSE; while (!fFinished) { // Check the object is a directory or not if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if ((strcmp(FileData.cFileName, ".") != 0) && strcmp(FileData.cFileName, "..") != 0)) { printf("%*s%s\\\n", indent, "", FileData.cFileName); // Get the full path for sub directory sprintf(szSubDir, "%s\\%s", dirname, FileData.cFileName); ScanDir(szSubDir, indent + 4); /!!Problem uebrschreibt dirname, muss irgendwie wieder //ins mainfolder kommen und naechsten subfolder durchsuchen!! Wie?? }//end if }//end if else { //LARGE_INTEGER FileSize; //GetFileSize(FileData.cFileName, &FileSize); //FileSize.LowPart = GetFileSize (FileData.cFileName, &FileSize.HighPart); printf("%*s%s%d\n", indent, "", FileData.cFileName, LowPart); } if (!FindNextFile(hList, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { fFinished = TRUE; } } writetextfile(); }//end while }//end else return 2; FindClose(hList); }
Wie kann man das problem einfach loesen? Ich komme einfach nicht drauf!
danke euch!
-
Zu der Dateigröße:
typedef struct _WIN32_FIND_DATA { // wfd DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[ MAX_PATH ]; TCHAR cAlternateFileName[ 14 ]; } WIN32_FIND_DATA;
Dieser Struct sollte dir weiterhelfen.