我有一个将 zip 文件作为 Java 输入的应用程序。我的应用程序将解压缩 zip 文件,并且在 zip 文件内有一些文件包含文件名超过 256 个字符
我可以在不解压缩的情况下修改 zip 中文件的文件名吗
操作系统:linux/mac
它更多的是对所使用的文件系统的限制,而不是操作系统本身。
您只能通过将驱动器格式化为支持更长文件名的不同文件系统来更改此设置。
为什么你需要一个几英里长的文件名,这超出了我的理解。但我能给出的唯一建议是,尽量缩短文件名。
::编辑::
既然你更新了你的问题。这是正确的答案。:)
通常,您的方法是正确的。尽管如果您的 zip 包含较长的文件名,您可以截断它们。(取第一个,250,忽略其余的。现在,您可能有重复的文件名。在末尾添加一个数字,因为您还剩下 5 个字符)另一个选项是要求用户输入一个新的文件名。
只要您知道 .etc 的结构,就可以编辑 zip 文件本身。
我不知道 Java 内置 API 允许编辑 zip 文件。虽然不久前,我遇到了这个库名称 DotNetZip for Microsoft.NET,它允许所有典型功能以及编辑 zip 文件中的条目、加密、密码等。(顺便说一句,这太棒了)
寻找类似的 Java 库。
如果用户为要创建的文件提供文件名,我认为您只需要要求一个较短的名称,足够短以避免引发此异常。
但听起来这是要读取的现有文件的名称;在那种情况下,如果系统(文件或操作;无论哪种方式,你无法控制的东西)说它不是一个有效的文件名,你怎么能期望能够从中读取呢?