gpt4 book ai didi

c++ - 检查路径中的所有文件大小(C++)

转载 作者:行者123 更新时间:2023-12-02 09:59:54 26 4
gpt4 key购买 nike

我正在尝试循环,以便我的程序可以获取文件夹中所有文件的权重,如果这些文件中任何一个的权重等于X,它将执行操作,我需要知道如何像这样循环,而且我有一个函数可以知道文件的大小

std::ifstream::pos_type filesize(const char* filename)
{
std::ifstream in(filename, std::ifstream::ate | std::ifstream::binary);
return in.tellg();
}

最佳答案

这是一个简短的示例程序,演示了如何使用C++ 17的<filesystem>库在目录上进行迭代。如果您的编译器是最新的,它应该支持C++ 17而不出现问题。

#include <filesystem>
#include <iostream>

int main() {
namespace fs = std::filesystem;

fs::path pwd(""); // Current directory program was executed from
pwd = fs::absolute(pwd);

for (auto& i : fs::directory_iterator(pwd)) {
try {
if (fs::file_size(i.path()) / 1024 > 2048) {
std::cout << i.path() << " is larger than 2MB\n";
}
} catch (fs::filesystem_error& e) {
std::cerr << e.what() << '\n';
}
}
}
这是目录的内容:
.
├── a.out
├── fiveKB
├── fourMB
├── main.cpp
└── oneMB

0 directories, 5 files
以及有关文件的信息:
drwxr-xr-x   7 user  staff   224B Jul 29 22:11 ./
drwxr-xr-x 13 user staff 416B Jul 29 21:59 ../
-rwxr-xr-x 1 user staff 47K Jul 29 22:10 a.out*
-rw-r--r-- 1 user staff 5.0K Jul 29 21:58 fiveKB
-rw-r--r-- 1 user staff 4.0M Jul 29 21:59 fourMB
-rw-r--r-- 1 user staff 450B Jul 29 22:11 main.cpp
-rw-r--r-- 1 user staff 1.0M Jul 29 21:59 oneMB
最后,输出: "/Users/user/Documents/tmp/test/fourMB" is larger than 2MB

关于c++ - 检查路径中的所有文件大小(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63165020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com