gpt4 book ai didi

java - 读取 zip 或 jar 文件而不先解压缩它

转载 作者:行者123 更新时间:2023-12-01 23:32:59 27 4
gpt4 key购买 nike

我不是在寻找任何涉及在 zip 输入或输出流中打开 zip 文件的答案。我的问题是,在java中是否可以像任何其他文件一样简单地打开一个jar文件(使用缓冲读取器/写入器),读取它的内容,然后将它们写入其他地方?例如:

import java.io.*;

public class zipReader {

public static void main(String[] args){

BufferedReader br = new BufferedReader(new FileReader((System.getProperty("user.home").replaceAll("\\\\", "/") + "/Desktop/foo.zip")));
BufferedWriter bw = new BufferedWriter(new FileWriter((System.getProperty("user.home").replaceAll("\\\\", "/") + "/Desktop/baf.zip")));
char[] ch = new char[180000];

while(br.read(ch) > 0){

bw.write(ch);
bw.flush();

}

br.close();
bw.close();

}

}

这适用于一些小的 zip/jar 文件,但大多数时候只会损坏它们,从而无法解压缩或执行它们。我发现将 char[] 的大小设置为 1 不会损坏文件,只会损坏文件中的所有内容,这意味着我可以在存档程序中打开该文件,但它的所有条目都将被损坏且无法使用。有谁知道如何编写上述代码以免损坏文件?另外,这是我测试过的 jar 文件中的一行,该文件已损坏:

nèñà?G¾Þ§V ¨ö—‚?‰9³’?ÀM·p›a0„èwåÕüaEܵp‡aæOùR‰(JºJ´êgžè*?”6ftöãÝÈ—ê@qïc3âi,áž…¹¿Êð)V¢cã>Ê”G˜(†®9öCçM?€ÔÙÆC†ÑÝ×ok?ý—¥úûFs.‡

与原始版本相比:

nèñàG¾Þ§V ¨ö—‚‰9³’ÀM·p›a0„èwåÕüaEܵp‡aæOùR‰(JºJ´êgžè*?”6ftöãÝÈ—ê@qïc3âi,áž…¹¿Êð)V¢cã>Ê”G˜(†®9öCçM€ÔÙÆC†ÑÝ×oký—¥úûFs.‡

正如您所看到的,读者或作者都在文件中添加了 ?,我不明白为什么。再说一次,我不希望任何答案告诉我逐项打开它,我已经知道如何做到这一点,如果有人知道我的问题的答案,请分享。

最佳答案

为什么要将二进制数据转换为字符?我认为使用字节数组的InputStream/OutputStream会好得多。请参阅http://www.javapractices.com/topic/TopicAction.do?Id=245例如。

关于java - 读取 zip 或 jar 文件而不先解压缩它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com