浏览压缩文件与游览解压缩它们
Browsing compressed files withtour decompressing them
我正在尝试在C++中制作一个程序,该程序应该能够浏览存档并在该存档中打开所需的文件。是否可以在不解压缩正在浏览的文件(或更确切地说是目录(的情况下完成此操作? 目前,我这样做是为了在Unix操作系统上工作,但最终目标是也适用于Windows。因此,我们的目标是使用"ls"命令获取文件列表并浏览目录(如cd(的方式类似。 到目前为止,我找到的所有内容都可以列出存档中的所有文件(如zipinfo等(,尽管我的目标不是一次列出所有文件,而是能够列出目录。例如,如果我有东西.zip里面有 2 个文件夹 - 文件夹 1 和文件夹 2,它们里面各有 2 个文件 - 文件1 和文件2 和文件夹 1,以及文件夹 4 中的文件4和文件2。 使用zipinfo,我会得到类似的东西: 文件夹1/文件1 文件夹1/文件2 文件夹2/文件3 文件夹2/文件4
我只想看到这个: 文件夹1 文件夹2
并从那里导航到每个文件夹。例如,进入文件夹 1 并查看: 罚款 文件2
如何用C++来弥补这一点?如果无法只看到文件夹,我会很高兴使用一些工具,我可以使用它查看所有文件,并且可以以一种仅显示文件夹并使"浏览"功能的方式解析它们。
编辑:我需要它与尽可能多的压缩方法一起工作。
这不是C++解决方案,但如果您有权访问zipinfo
并运行以下命令:
zipinfo -1 filename.zip
这将为您提供如下格式的输出:
file.txt
another.txt
directory/another/file.txt
yetagain.odt
another/file.png
directory/file.txt
通过解析此输出,可以创建如下结构:
+-- file.txt
+-- another.txt
+--directory
| +--another
| | +-- file.txt
| +-- file.txt
+--another
| +-- file.png
然后,您可以允许用户按照您希望的方式浏览此树。
使用tar -t
您可以查看压缩文件的文件名,而无需真正解压缩它们,请参阅手册页:
TAR(1)
...
NAME
tar — The GNU version of the tar archiving utility
SYNOPSIS
tar [-] A --catenate --concatenate | c --create | d --diff --compare | --delete | r --append | t --list | --test-label | u --update | x --extract --get [options] [pathname ...]
FUNCTION LETTERS
Main operation mode:
-t, --list
list the contents of an archive
相关文章:
- 使用C++进行运行长度解压缩
- C++ 如何将数组值解压缩为函数参数
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 浏览压缩文件与游览解压缩它们
- 如何在C++向量中解压缩多个值
- 解压缩 C 样式数组以及C++中的参数包
- 如何在 cpp 中解压缩数字,如果它们是使用 struct.pack(fmt, v1, v2, ..) 打包在 pyth
- 如何使用 Poco::ZIP 压缩/解压缩 zip 文件
- 在编译时解压缩数组扩展数据块 (C++11/14)
- 使用 RtMidi 解压缩 Midi 时间码
- 将参数包解压缩到 std::initializer_list?
- 解压缩可变模板参数
- 解压缩附加的压缩字符串
- 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压缩到__m256的最快方法
- 解压缩压缩的 TIFF 数据
- 如何在视觉工作室中使用C++解压缩压缩文件 (.zip)
- 使用 libtiff 的 TIFFReadRawTile 无需解压缩/压缩即可获得 jpeg 磁贴
- 使用 libzpaq 压缩 c++ 压缩到 char* 缓冲区
- 如何使用Boost解压缩压缩数据的矢量