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.


Log in to reply