这一段代码是由ChatGPT给出的:
#include <iostream>
#include <string>
#include <boost/filesystem.hpp> // 引入boost库中的文件系统功能
#include <jsoncpp/json/json.h> // 引入jsoncpp库
using namespace std;
namespace fs = boost::filesystem;
int main(int argc, char* argv[]) {
if (argc < 2) {
cerr << "Usage: " << argv[0] << " [directory path]" << endl;
return 1;
}
// 获取指定目录的路径
fs::path dir_path(argv[1]);
if (!fs::is_directory(dir_path)) {
cerr << dir_path << " is not a directory" << endl;
return 1;
}
// 创建一个JsonArray容器
Json::Value json_array(Json::arrayValue);
// 遍历目录中的文件
for (fs::directory_iterator itr(dir_path); itr != fs::directory_iterator(); ++itr) {
if (fs::is_regular_file(itr->path())) { // 判断是否为普通文件
fs::path file_path = itr->path(); // 获取文件路径
string file_extension = file_path.extension().string(); // 获取文件扩展名
if (file_extension == ".mp4" || file_extension == ".png") { // 判断是否为MP4或PNG文件
// 创建一个JsonObject,包含文件名和路径信息
Json::Value json_file(Json::objectValue);
json_file["filename"] = file_path.filename().string();
json_file["path"] = file_path.string();
// 将JsonObject添加到JsonArray容器中
json_array.append(json_file);
}
}
}
// 将JsonArray容器转化为Json字符串输出
Json::StyledWriter writer;
cout << writer.write(json_array) << endl;
return 0;
}
请注意,此代码需要安装boost库和jsoncpp库才能编译。您可以使用以下命令在Ubuntu上安装它们:
sudo apt-get install libboost-all-dev libjsoncpp-dev
在编译时,需要链接boost和jsoncpp库。您可以使用以下命令编译代码:
g++ -o program_name program_name.cpp -lboost_system -lboost_filesystem -ljsoncpp