我目前遇到这个问题,我的.gz文件是“some_name.txt.gz”(.gz不可见,但可以用File :: Type函数识别), 在.gz文件中,有一个名为“some_name.txt”的文件夹,其中包含其他文件和文件夹。
但是,当我从Archive :: Extract调用提取函数时,我无法像手动提取存档(名称为“some_name.txt”的文件夹及其内容一起提取),因为它只是将“some_name.txt”文件夹解压缩为.txt文件..
我一直在网上搜索答案,但没有一个是正确的解决方案。有办法解决这个问题吗?
谢谢!
答案 0 :(得分:0)
也许你可以使用File :: Type识别这些文件,用.gz扩展名而不是.txt重命名它们,然后尝试使用Archive :: Extract吗?
答案 1 :(得分:0)
来自Archive::Extract官方文件
“因为.gz文件永远不会保存目录,只能保存一个文件;”
我建议在文件夹上使用tar然后gz它。 这样您就可以使用Archive::Tar轻松提取特定文件:
官方文档示例:
$ tar-> extract_file($ file,[$ extract_path]) 写一个条目,其名称相当于提供给磁盘的文件名。 (可选)接受第二个参数,即该条目将写入的完整本机路径(包括文件名)。 例如:
$tar->extract_file( 'name/in/archive', 'name/i/want/to/give/it' );
$tar->extract_file( $at_file_object, 'name/i/want/to/give/it' );
成功时返回true,失败时返回false。
希望这有帮助。
答案 2 :(得分:0)
gzip文件只能包含一个文件。如果您有一个包含文件夹以及多个其他文件和文件夹的存档文件,那么您可能有一个包含tar文件的gzip文件。或者,您可能有一个zip文件。
您能否详细介绍如何创建存档文件及其内容列表?