zoukankan      html  css  js  c++  java
  • 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"路径下的。  问题得以解决。

    坚持成就伟大
  • 相关阅读:
    数据移除的循环
    C#窗体多语言切换(简繁)
    C# 文字转换最简单的方法
    使用CodeDOM动态编译一个字符串表达式
    C#设置WebBrowser默认浏览器
    Image和字节数组互转
    苹果手机的SB系列(8)为什么没有短信全部删除?
    循环删除外键约束
    腾讯云COS自定义域名,支持https,CDN,私有访问
    腾讯云COS请求签名C#版
  • 原文地址:https://www.cnblogs.com/xian-yongchao/p/15542386.html
Copyright © 2011-2022 走看看