我目前遇到了这个问题,我的 .gz 文件是“some_name.txt.gz”(.gz 不可见,但可以用File::Type
函数识别),在 .gz 文件中,有一个文件夹名称“some_name.txt”,其中包含其他文件和文件夹。
但是,当Archive::Extract
从文件夹作为 .txt 文件。
我一直在网上搜索答案,但没有一个是正确的解决方案。有没有解决的办法?
也许您可以使用 File::Type 识别这些文件,使用 .gz 扩展名而不是 .txt 重命名它们,然后尝试使用 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' );
成功返回真,失败返回假。
希望这可以帮助。
一个 gzip 文件只能包含一个文件。如果您的存档文件包含一个文件夹以及多个其他文件和文件夹,那么您可能有一个包含 tar 文件的 gzip 文件。或者,您可能有一个 zip 文件。
您能否提供有关如何创建存档文件及其内容列表的更多详细信息?