1. 程式人生 > 其它 >C++ 檔案型別判別錯誤,將目錄檔案識別為普通檔案

C++ 檔案型別判別錯誤,將目錄檔案識別為普通檔案

場景:

  我使用Linux作業系統的時候,自己的虛擬機器能夠正常判斷檔案型別,而且同一臺電腦之前幾次都能正確識別檔案型別,但這一次識別檔案型別錯誤。單步除錯,檔名能夠正常被讀取。下面的函式中除了"."和".."的目錄能夠正常識別以外,其餘目錄檔案全被識別為普通檔案(ptr->d_type為0)。

程式碼如下:

    std::vector<std::string> folderList;
    DIR *dir;
    struct dirent *ptr;
    std::string allPath = path; //檔案或檔案的完整路徑
    if ((dir=opendir(allPath.c_str())) == NULL){
        zout
<<"open dir error:"<<allPath << endl; std::perror("error info:"); return folderList; } while ((ptr=readdir(dir)) != NULL){ if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir continue; else
if(ptr->d_type == 4){ //若為目錄檔案則返值為,普通檔案則為0 folderList.push_back(ptr->d_name); } } std::sort(folderList.begin(), folderList.end()); closedir(dir); return folderList;

產生原因:

  硬碟所在的目錄未被掛載成功。

檢視磁碟情況:

  檢視磁碟情況:df -h(發現無對應磁碟)

  檢視裝置情況: ls /dev/md*

  

解決方法:

  命令列輸入:mount /dev/md127(裝置路徑) /mnt/store(檔案和目錄所在路徑),即將"/dev/md127"裝置掛載在"/mnt/store"路徑下的。 問題得以解決。

堅持成就偉大