我遇到了一个问题,但不确定它是什么,但希望有人能帮助我解决这个问题,因为这让我很困惑。
背景故事:
我编写了一个 Java 应用程序(Android),用于解压从网络下载的一些 zip 文件。到目前为止,它运行良好。然后,本周,我在电脑上(在 Ubuntu 12.04 中)创建的档案在 Android 手机上解压为一个平面层次结构,而不是保留文件夹。我以相同的方式创建档案(右键单击文件夹 > 压缩),但即使我的旧档案(在 10.04 中创建)仍按预期解压,新档案却不行。在 Ubuntu 上,新的 zip 文件在我看来与旧的一样。在我的电脑上解压时,这些新档案中的文件夹恢复为与旧文件夹一样...这是 Android 应用程序可以正常提取旧文件夹,而将新文件夹平铺。但我真正想知道的是档案之间的区别是什么。
问题:
如何确定为什么一个 zip 存档会在保留文件夹层次结构的情况下被提取,而一个相同的存档(在 Ubuntu 12.04 上看起来完全一样)却没有层次结构? .zip 文件可以“拥有”文件夹,但 Ubuntu 不区分它们,这有什么不同吗?
答案1
我建议安装解压缩包,然后运行unzip -l <archive_name>
来检查 zip 文件的真实结构。
在 zip 文件中存储文件夹的方式没有区别。文件夹可能存在,也可能不存在。但是,在解压时,处理 zip 文件中的文件夹的方式有所不同(如果有的话)。例如,根据用户的指示,解压程序可能会忽略所有文件夹,只将文件提取到单个目录中(unzip -j
会这样做)。或者,它可能将所有文件提取到 zip 存档中不存在的目录中(会这样做unzip -d
)。