java 替换zip中的文件,Java.util.zip替换单个zip文件 - java

问题

我有一个现有的zip文件“main.zip”。我要替换其中的单个文件“say main.zip/foo”。

我知道:

http://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipOutputStream.html

但是,这并不能满足我的要求,因为它会创建一个新的Zip文件-因此,我还必须在main.zip中添加所有现有条目。

题:

有没有一种方法可以用Java“替换” Zip存档中的单个文件? (无需重新创建新的zip存档并复制所有旧数据)。

参考方案

我觉得你很幸运。

结合使用Java 7 java.nio.file.FileSystem和Files.copy(),我设法在一瞬间将文本文件插入到大型zipfile中。

public static void main(String[] argv) {

Path myFilePath = Paths.get("c:/dump2/mytextfile.txt");

Path zipFilePath = Paths.get("c:/dump2/myarchive.zip");

try( FileSystem fs = FileSystems.newFileSystem(zipFilePath, null) ){

Path fileInsideZipPath = fs.getPath("/mytextfile.txt");

Files.copy(myFilePath, fileInsideZipPath);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

它使用ZipFileSystem Provider“加载” zip。然后,您可以将任何内容复制到其中。更改似乎发生在fs.close()上

Read more @ oracle

java.util.Scanner不返回到提示 - java

import java.util.Scanner; class newClass { public static void main(String args[]) { Scanner s = new Scanner(System.in); while (s.hasNext()) { System.out.println(s.next()); } s.clos…java.util.HashSet是否不遵循其规范? - java

作为相对的Java noob,我很困惑地发现以下内容:Point.java:public class Point { ... public boolean equals(Point other) { return x == other.x && y == other.y; } ... } Edge.java:public class Edge…使用java.util.properties存储ArrayList和HashMap - java

如何使用ArrayList存储HashMap和/或java.util.properties变量?如果不可能,可以使用其他什么类来存储应用程序配置? 参考方案 如果只需要将集合序列化为字符串,我强烈建议XStream。它使用反射将类序列化为XML。如果默认行为对您要序列化的类不起作用,则有文档,但是到目前为止,以下内容对我而言一直有效:XStream xstr…Java将oracle时间戳解析为date.util.date - java

我想将oracle时间戳(01-MAY-12 01.00.47.000000000 PM)解析为java.util.Date我用这个:Date dateStart=new SimpleDateFormat("yy-MM-dd HH:mm:ss.S").parse("01-MAY-12 01.00.47.000000000 PM&…Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值