前言:
如今同学们对“java读取zip”大体比较关注,朋友们都想要知道一些“java读取zip”的相关内容。那么小编同时在网摘上网罗了一些有关“java读取zip””的相关文章,希望小伙伴们能喜欢,小伙伴们快快来学习一下吧!一、读取Gzip的文件
BufferedReader br = new BufferedReader(new InputStreamReader(new MultiMemberGZIPInputStream(new PushbackInputStream( new BufferedInputStream(new FileInputStream(filePath))), 1024)));
BufferedReader br = new BufferedReader(new InputStreamReader(new MultiMemberGZIPInputStream(new PushbackInputStream( new BufferedInputStream(new FileInputStream(filePath))), 1024)));
二、网上有些网友说通过继承GZIPInputStream可以解决Gzip部分问题文件读取的时候会报错java.io.IOException: Not in GZIP format,经过尝试还是继续报错
import java.io.IOException;import java.io.InputStream;import java.io.PushbackInputStream;import java.util.zip.GZIPInputStream;public class MultiMemberGZIPInputStream extends GZIPInputStream { public MultiMemberGZIPInputStream(InputStream in, int size) throws IOException { super(new PushbackInputStream(in, size), size); this.size = size; } public MultiMemberGZIPInputStream(PushbackInputStream pushbackInputStream) throws IOException { super(pushbackInputStream); this.size = -1; } private MultiMemberGZIPInputStream(MultiMemberGZIPInputStream parent) throws IOException { super(parent.in); this.size = -1; if (parent.parent == null) { this.parent = parent; } else { this.parent = parent.parent; } this.parent.child = this; } private MultiMemberGZIPInputStream(MultiMemberGZIPInputStream parent, int size) throws IOException { super(parent.in, size); this.size = size; if (parent.parent == null) { this.parent = parent; } else { this.parent = parent.parent; } this.parent.child = this; } private MultiMemberGZIPInputStream parent; private MultiMemberGZIPInputStream child; private int size; private boolean eos; @Override public int read(byte[] inputBuffer, int inputBufferOffset, int inputBufferLen) throws IOException { if (eos) { return -1; } if (this.child != null) { return this.child.read(inputBuffer, inputBufferOffset, inputBufferLen); } int charsRead = super.read(inputBuffer, inputBufferOffset, inputBufferLen); if (charsRead == -1) { int n = inf.getRemaining() - 8; if (n > 0) { ((PushbackInputStream) this.in).unread(buf, len - n, n); } else { byte[] b = new byte[1]; int ret = in.read(b, 0, 1); if (ret == -1) { eos = true; return -1; } else { ((PushbackInputStream) this.in).unread(b, 0, 1); } } MultiMemberGZIPInputStream tmpChild; if (this.size == -1) { tmpChild = new MultiMemberGZIPInputStream(this); } else { tmpChild = new MultiMemberGZIPInputStream(this, this.size); } return tmpChild.read(inputBuffer, inputBufferOffset, inputBufferLen); } else { return charsRead; } }}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java读取zip #apachegzip报错