利用FILE* fp = popen(cmd, "r"); pclose(fp); pLogger->info("文件解压完成");这个解压,怎么能得到像没有压缩文件FILE* file = fopen(strFile87Path.c_str(), "rb");这个file一样的解压后文件的指针
时间: 2024-03-06 18:49:25 浏览: 67
`popen()` 函数返回的文件指针是用于读取命令的输出。如果你想要获得解压后文件的指针,可以使用 `fopen()` 函数打开解压后的文件。
以下是一个示例代码,假设原文件名为 `filename.gz`,解压后的文件名为 `filename`:
```c++
std::string filename = "filename.gz";
// 去掉文件名的后缀,得到文件名
std::string basename = filename.substr(0, filename.find_last_of("."));
// 解压文件
std::string cmd = "gunzip " + filename;
FILE* fp = popen(cmd.c_str(), "r");
if (fp == nullptr) {
// 执行错误处理
}
// 打开解压后的文件
std::string uncompressed_filename = basename;
FILE* file = fopen(uncompressed_filename.c_str(), "rb");
if (file == nullptr) {
// 执行错误处理
}
// 读取文件内容
// ...
// 关闭文件指针
fclose(file);
// 关闭文件流
pclose(fp);
```
在这个代码中,首先从原文件名中获取解压后的文件名,然后使用 `popen()` 函数执行解压命令,并获取输出文件流。使用 `fopen()` 函数打开解压后的文件,并读取文件内容。最后关闭文件指针和文件流。
阅读全文