使用Poco库遍历目录

在本教程中,将学习如何使用PocoC++库中的DirectoryIterator类来遍历目录中的所有项目,并使用DateTimeFormatter类来格式化文件的最后修改时间戳,而不是使用默认的UTC时间。这个工具模仿了Unix命令行中的ls -all命令的行为。

首先,需要创建一个名为rec_dir.cc的文件,并在其中编写以下代码:

C++代码:

#include <Poco/DirectoryIterator.h> #include <Poco/DateTimeFormatter.h> #include <Poco/LocalDateTime.h> #include <iostream> #include <string> using namespace Poco; using namespace std; void rec_dir(const string & path) { DirectoryIterator end; for (DirectoryIterator it(path); it != end; ++it) { cout << (it->isDirectory() ? "d" : "-"); cout << (it->canRead() ? "r" : "-"); cout << (it->canWrite() ? "w" : "-"); cout << (it->canExecute() ? "x" : "-"); cout << "\t"; cout << it->getSize() << "\t"; LocalDateTime lastModified(it->getLastModified()); cout << DateTimeFormatter::format(lastModified, "%Y-%m-%d %H:%M") << "\t"; cout << it->path() << (it->isDirectory() ? "/" : it->canExecute() ? "*" : "") << endl; if (it->isDirectory()) { rec_dir(it->path()); } } } int main(int argc, char **argv) { rec_dir(argc > 1 ? argv[1] : "."); return 0; }

编译并运行:

$ g++ -o rec_dir rec_dir.cc -lPocoFoundation $ ./rec_dir

输出结果示例:

-rwx 14223 2011-09-14 13:34 rec_dir* drwx 4096 2011-09-14 12:52 testdir/ drwx 4096 2011-09-14 12:52 testdir/dir/ -rw- 941 2011-09-14 13:24 rec_dir.cc -rw- 0 2011-09-14 12:43 somefile
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485