我正在尝试使用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 ++完成?如果无法仅查看文件夹,我将对可以查看所有文件的工具感到满意,并且可以通过解析这些文件的方式来使它们仅显示文件夹并具有“浏览”功能。
编辑:我需要它与尽可能多的压缩方法一起使用。
答案 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