浏览压缩文件并用解压缩文件

时间:2018-10-18 08:41:21

标签: c++ unix archive

我正在尝试使用C ++编写一个程序,该程序应能够浏览档案并在该档案中打开所需的文件。是否可以不对正在浏览的文件(或目录)进行解压缩而实现? 目前,我正在这样做以在Unix操作系统上工作,但是最终目标是也要在Windows上工作。因此,目标是对使用“ ls”命令获取文件列表并浏览目录(例如cd)的方式具有相似之处。 到目前为止,我发现的所有内容都可以列出存档中的所有文件(例如zipinfo等),尽管我的目标不是立即列出所有文件,而是可以浏览目录。例如,如果我有something.zip,并且其中有2个文件夹-folder1和folder2,并且其中每个文件都有2个文件-file1和file2和folder1,以及folder2中的file4和file4。 使用zipinfo,我将得到类似的信息: 文件夹1 /文件1 文件夹1 /文件2 文件夹2 /文件3 文件夹2 /文件4

,我只想看这个: 资料夹1 文件夹2

,然后可以导航到每个文件夹。例如,进入folder1并查看: 文件1 file2

如何使用C ++完成?如果无法仅查看文件夹,我将对可以查看所有文件的工具感到满意,并且可以通过解析这些文件的方式来使它们仅显示文件夹并具有“浏览”功能。

编辑:我需要它与尽可能多的压缩方法一起使用。

2 个答案:

答案 0 :(得分:2)

这不是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

然后,您可以允许用户浏览他们想要的树。

答案 1 :(得分:0)

使用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