列出Unix目录中按大小排列的前10个文件
list top 10 files by size in a unix directory
我正在尝试使用c++读取unix目录(包括所有子目录)并列出十大文件。我已经读到,我可以使用#include direct .h和使用struct dient,但我有麻烦将目录名称作为变量传递给opendir/readdir。基本上它不识别它,说文件/目录未找到。请问你能帮我如何在c++中做到这一点,并打印出目录中最大的10个文件吗?由于
DIR *dir;
struct dirent *ent;
dir = opendir ("homedir");
if (dir != NULL) {
while ((ent = readdir (dir)) != NULL) {
cout << ent->d_name <<endl;
}
closedir (dir);
} else {
cout << "Can't open directory" << endl;
}
你没有给出足够的细节,但是当你阅读的时候递归地,您是否将您读取的名称后置到以前的名字。读取目录不会改变当前目录,所以你的函数应该或多或少像:
<>之前std::向量readdirectoresrecursive (std::string constys & path){std::向量结果;表示路径中的每个名称如果是目录results.insert (results.end (),readdirectoresrecursive (path + '/' + filename);其他的结果。push_back(FileInfo(path + '/' + filename));返回结果;}之前在FileInfo
的构造函数中,使用stat
获取大小。得到结果后,按大小排序,并输出前10个。
你就快成功了。你有所有的文件名。有了这些,您可以执行stat
来获取每个文件的文件大小。当你对文件大小降序排序时,你会得到十个最大的文件。
struct stat buf;
stat(ent->d_name, &buf);
请参阅手册页中的详细示例
相关文章:
- 将 10 个线程与原子布尔值同步
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如何让用户C++输入少于 10 个元素的数组
- 二叉树插入功能不适用于 10 个条目
- 在文件中查找 10 个最长的单词
- 视觉C++查找以 "ing" 结尾且少于或等于 10 个字符的单词
- 如何从大到小组织数组中的前 10 个常用值
- 最少 10 个数字使用 for 循环
- 在 C++ 中使用 10 个随机整数的数组进行气泡排序不起作用
- 链接在XLNT.TEST项目上失败,具有10个未经介绍的外部链接:
- 将 10 个整数存储到数组C++中时出现问题
- 如何在我的优先队列中访问10个最大数字
- 如何在不使用System()的情况下使用C 删除除最后10个文件外的所有文件
- 如何打印用户在C++中输入的 10 个数字的最小值
- 10个用户的用户注册程序
- 将 (*abc) + 15 未定义,因为数组只有 10 个字符长
- 程序在输入 10 个字符串后崩溃
- 如何获取数组中的 10 个最低值
- 如何用C++编写一个程序,该程序从输入中接收10个数字并检查这些数字是否按升序排列
- 列出Unix目录中按大小排列的前10个文件