我需要在文件上保存一个字符串,我正在使用DeflaterOutputStream进行压缩.当我尝试解压缩时,我无法获得原始字符串.我得到一个未清除的符号.她是我的代码:
public static void decompress() throws Exception { InputStream in=new FileInputStream("E:/codes.txt"); InflaterInputStream ini = new InflaterInputStream(in); ByteArrayOutputStream bout =new ByteArrayOutputStream(512); int b; while ((b = in.read()) != -1) { bout.write(b); } ini.close(); bout.close(); String s=new String(bout.toByteArray()); System.out.print(s); } public static void compressData(byte[] data) throws Exception { OutputStream out=new FileOutputStream("E:/test.txt"); Deflater d = new Deflater(); DeflaterOutputStream dout = new DeflaterOutputStream(out, d); dout.write(data); dout.close(); } public static void main(String[] args) throws Exception { compressData("My name is Motasem".getBytes()); decompress(); }
我不知道问题究竟在哪里.我虽然是将字节数组转换为String但我尝试了它并且它正在工作.你可以访问这个网站http://www.mkyong.com/java/how-do-convert-byte-array-to-string-in-java/
你有一个简单但很难注意到的bug.您实际上并没有使用InflaterInputStream来读取数据.你只是打开和关闭它.您阅读该文件的代码是:
while ((b = in.read()) != -1) {
应该
while ((b = ini.read()) != -1) {