我需要在文件上保存一个字符串,我正在使用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) {