C++ 文件类型判别错误,将目录文件识别为普通文件
2021/11/12 1:10:11
本文主要是介绍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++ 文件类型判别错误,将目录文件识别为普通文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享