java - 重命名 zip 文件中的文件名

标签 java zip rename archive

尝试重命名 zip 文件中的内部文件,而无需解压缩然后以编程方式重新压缩。

例子。 test.zip包含test.txt,我想改成test.zip包含newtest.txt(test.txt改名为newtest.txt,内容不变)

遇到了这个有效的链接,但不幸的是它期望 test.txt 存在于系统上。在示例中,srcfile 应该存在于服务器上。

Blockquote Rename file in zip with zip4j

然后我在 Linux 上找到了 zipnote,它可以解决问题,但不幸的是我的版本不适用于 >4GB 的文件。

关于如何实现这一点有什么建议吗?最好在 Java 中。

最佳答案

这应该可以使用 Java 7 Zip 文件系统提供程序,例如:

// syntax defined in java.net.JarURLConnection
URI uri = URI.create("jar:file:/directoryPath/file.zip");

try (FileSystem zipfs = FileSystems.newFileSystem(uri, Collections.<String, Object>emptyMap())) {
    Path sourceURI      = zipfs.getPath("/pathToDirectoryInsideZip/file.txt");
    Path destinationURI = zipfs.getPath("/pathToDirectoryInsideZip/renamed.txt");          

    Files.move(sourceURI, destinationURI); 
}

关于java - 重命名 zip 文件中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126450/

相关文章:

java - 维护 Mule 消息

java - org.o7planning.aboutcompany.MainController 中的字段 dataSource 需要类型为 'javax.sql.DataSource' 的 bean,但无法找到

java - 在 Java 中将文件夹放入 Zip 中

Linux zip 选定的文件夹并为压缩文件创建下载链接

python - 动态重命名方法

linux - 在单个 Linux 命令操作系统脚本中使用某些条件重命名多个文件夹中的所有文件。

java - 创建了一个新的Android项目,在手机上运行时崩溃

java - 为什么多线程 Java 程序在 'super' Linux 服务器上没有比笔记本电脑 Win7 更快?

c# - 使用 SharpZipLib 压缩文件时出现 "Invalid folder"错误

linux - 重命名递归特定文件