Poco C++如何获取某个目录下的所有文件
记录第一次写博客,开始也在网上找了很多怎样获取文件的代码,有一个io.h(这个比较坑,只能windows下用,Linux不行),也有替代的。但用Poco库更简单,要运行下面的代码,还需要做以下一些事,配置一下附加包含目录和附加库目录(包含lib路径就行),这时候就可以生成解决方案,但是还不能运行,需要将PocoFoundationd.dll放到.exe同目录下即可运行。
#include <iostream>
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
#include "Poco/DirectoryIterator.h"
#include "Poco/Exception.h"
using Poco::DirectoryIterator;
int GetFiles(const char *path, std::vector<std::string>& files)
{
std::string pathString = path;
try
{
DirectoryIterator it(pathString);
DirectoryIterator end;
while (it != end)
{
if (it->isFile()) // 判断是文件还是子目录
{
files.push_back(it.path().toString());
std::cout << it.path().toString() << std::endl; //获取当前文件的的绝对路径名,it.name()只表示文件名
}
else
{
std::cout << "DiretoryName: " << it.path().toString()<< std::endl; //输出当前目录的绝对路径名(包含文件夹的名字)
GetFiles(it.path().toString().c_str(), files);
}
++it;
}
return 0;
}
catch (Poco::Exception& exc)
{
std::cerr << exc.displayText() << std::endl;
return 1;
}
}
int main(int argc, char** argv)
{
std::string pathString = "D:/xiangdian/"; // 也可以用\\也分割路径
std::vector<std::string> files;
GetFiles(pathString.c_str(), files);
//for (int i = 0; i < files.size(); i++) {
// std::cout << files[i] << std::endl;
//}
system("pause");
return 0;
}