解压缩 Gzip 文件并存储在变量中
Decompress Gzip file and store in variable
我搜索了很多关于从字节到字符串的转换,但我的查询有点不同,请继续阅读。
目前我有一个 gzip 文件,我可以使用 http://www.mkyong.com/java/how-to-decompress-file-from-gzip-file/ 中的代码对其进行解压缩。
这段代码帮助我将解压缩的输出存储在一个文件中,但我如何将它存储在一个变量中?我目前正在使用此代码:
public String unGunzipFile(String compressedFile, String decompressedFile) {
byte[] buffer = new byte[1024];
try {
FileInputStream fileIn = new FileInputStream(compressedFile);
GZIPInputStream gZIPInputStream = new GZIPInputStream(fileIn);
FileOutputStream fileOutputStream = new FileOutputStream(decompressedFile);
StringBuffer str = new StringBuffer();
int bytes_read;
while ((bytes_read = gZIPInputStream.read(buffer)) > 0) {
String s = new String(buffer);
str.append(s);
fileOutputStream.write(buffer, 0, bytes_read);
}
gZIPInputStream.close();
fileOutputStream.close();
System.out.println("The file was decompressed successfully!");
System.out.println(str);
String final_string = str.toString();
return final_string;
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
}
由于当 bytes_read
的长度不是 1024 时我将字节转换为字符串接近尾声我最终在我的 StringBuffer 中得到一些奇怪的数据,但是在文件中没有这样的数据因为 fileOutputStream.write(buffer, 0, bytes_read);
将其限制为编写更新的部分。
我该如何解决这个问题?
提前致谢。
使用 String(byte[] bytes, int offset, int length)
构造函数来指定要转换的长度。即
String s = new String(buffer, 0, bytes_read)
我建议使用
而不是使用 String s = new String(buffer)
public 字符串(字节[] 字节,
整数偏移量,
整数长度)
这可能对你有帮助。
我搜索了很多关于从字节到字符串的转换,但我的查询有点不同,请继续阅读。
目前我有一个 gzip 文件,我可以使用 http://www.mkyong.com/java/how-to-decompress-file-from-gzip-file/ 中的代码对其进行解压缩。 这段代码帮助我将解压缩的输出存储在一个文件中,但我如何将它存储在一个变量中?我目前正在使用此代码:
public String unGunzipFile(String compressedFile, String decompressedFile) {
byte[] buffer = new byte[1024];
try {
FileInputStream fileIn = new FileInputStream(compressedFile);
GZIPInputStream gZIPInputStream = new GZIPInputStream(fileIn);
FileOutputStream fileOutputStream = new FileOutputStream(decompressedFile);
StringBuffer str = new StringBuffer();
int bytes_read;
while ((bytes_read = gZIPInputStream.read(buffer)) > 0) {
String s = new String(buffer);
str.append(s);
fileOutputStream.write(buffer, 0, bytes_read);
}
gZIPInputStream.close();
fileOutputStream.close();
System.out.println("The file was decompressed successfully!");
System.out.println(str);
String final_string = str.toString();
return final_string;
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
}
由于当 bytes_read
的长度不是 1024 时我将字节转换为字符串接近尾声我最终在我的 StringBuffer 中得到一些奇怪的数据,但是在文件中没有这样的数据因为 fileOutputStream.write(buffer, 0, bytes_read);
将其限制为编写更新的部分。
我该如何解决这个问题?
提前致谢。
使用 String(byte[] bytes, int offset, int length)
构造函数来指定要转换的长度。即
String s = new String(buffer, 0, bytes_read)
我建议使用
而不是使用 String s = new String(buffer)public 字符串(字节[] 字节, 整数偏移量, 整数长度)
这可能对你有帮助。