背景

Win11 21H2(OS Build 22000.2538)
Android 10(4.9.193)

简述

最近,遇到一个奇怪的问题。使用某Android应用,在导入Zip文件时,自制的Zip导入失败,而下载的Zip却能成功。

具体为错误:"导入失败:java.io.IOException: No such file or directory."

排查

首先,对比Zip文件,没发现什么明显差异。
其次,分析应用,异常来源为,java.io.UnixFileSystem.createFileExclusively0,但感觉根源不是这里。

仔细对比发现,两个Zip,虽然文件相同,但ZipEntry是不同的,自制的Zip文件缺少目录级的ZipEntry。

根源

原来,在Windows,使用自带的Zip支持,通过右键操作"压缩为 ZIP 文件",这样打包出来的压缩包是不带目录Entry的。

更多

  1. 如果使用此功能,压缩空文件夹,也会错误。

    [ 压缩(zipped)文件夹错误 ]
    指定目录xxxx是空的,因此压缩(zipped)文件夹不能将其添加到存档。

  2. createFileExclusively0 一般情况下也是需要特别注意的。

参考

  1. 压缩和解压缩文件 - Microsoft 支持
  2. 2023 - 微软 Win11 将原生支持 tar、7-zip、rar、gz 等格式压缩文件 - IT之家
  3. Add a top level empty directory to a zip file on Windows - superuser

Related Posts


Published

Category

windows

Tags

Contact