Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用libarchive读取目录 我有一个C++程序,我想从磁盘中读取一些描述的存档。我想把它重建成一个大致树状的形式,以镜像磁盘上的结构,不支持像符号链接/硬链接这样的时髦东西_C++_Libarchive - Fatal编程技术网

使用libarchive读取目录 我有一个C++程序,我想从磁盘中读取一些描述的存档。我想把它重建成一个大致树状的形式,以镜像磁盘上的结构,不支持像符号链接/硬链接这样的时髦东西

使用libarchive读取目录 我有一个C++程序,我想从磁盘中读取一些描述的存档。我想把它重建成一个大致树状的形式,以镜像磁盘上的结构,不支持像符号链接/硬链接这样的时髦东西,c++,libarchive,C++,Libarchive,读取下一个标题时,很明显,您可以检查条目类型以查看它是目录还是文件。不清楚的是,如果它是一个目录,接下来会发生什么。archive_read_next_标头是否自动以BFS/DFS方式执行完整的树遍历?或者我应该递归地创建新的归档项结构并调用一些我还没有找到的函数来遍历目录项吗?一般来说,归档文件是文件和目录项的简单序列。归档格式通常不指定所需的顺序。有些存档格式隐式要求存在目录项,但有些格式根本不需要它们。在前一种情况下,隐式需求来自存档实用程序,如果文件应该位于的目录不存在,则在提取文件时会

读取下一个标题时,很明显,您可以检查条目类型以查看它是目录还是文件。不清楚的是,如果它是一个目录,接下来会发生什么。archive_read_next_标头是否自动以BFS/DFS方式执行完整的树遍历?或者我应该递归地创建新的归档项结构并调用一些我还没有找到的函数来遍历目录项吗?

一般来说,归档文件是文件和目录项的简单序列。归档格式通常不指定所需的顺序。有些存档格式隐式要求存在目录项,但有些格式根本不需要它们。在前一种情况下,隐式需求来自存档实用程序,如果文件应该位于的目录不存在,则在提取文件时会发出抱怨。这意味着,要创建该目录,必须在归档文件的早期任何位置为该目录创建一个条目,或者在实用程序运行之前,该目录必须存在。其他归档实用程序,如tar或zip,只需创建缺少的目录


换句话说,目录条目只表示目录本身,而不是其内容。在一般情况下,当您在文件和目录项的名称中发现目录节点时,应该准备在树中创建目录节点。您需要遍历树以找到每个文件应附加到的节点。

您可以通过以下printf示例并检查归档文件的输出来轻松检查这一点:I can do,如果我在Linux上运行C,只关心库的一个构建在一个平台上读取一种特定格式和压缩组合时的行为。你不信任接口,我可以理解。。。