[英]Compress a string to gzip in Java
public static String compressString(String str) throws IOException{
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
Gdx.files.local("gziptest.gzip").writeString(out.toString(), false);
return out.toString();
}
When I save that string to a file, and run gunzip -d file.txt
in unix, it complains: 当我将该字符串保存到文件,并在unix中运行gunzip -d file.txt
时,它会抱怨:
gzip: gzip.gz: not in gzip format
Try to use BufferedWriter
尝试使用BufferedWriter
public static String compressString(String str) throws IOException{
if (str == null || str.length() == 0) {
return str;
}
BufferedWriter writer = null;
try{
File file = new File("your.gzip")
GZIPOutputStream zip = new GZIPOutputStream(new FileOutputStream(file));
writer = new BufferedWriter(new OutputStreamWriter(zip, "UTF-8"));
writer.append(str);
}
finally{
if(writer != null){
writer.close();
}
}
}
About your code example try: 关于你的代码示例尝试:
public static String compressString(String str) throws IOException{
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream(str.length());
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
byte[] compressedBytes = out.toByteArray();
Gdx.files.local("gziptest.gzip").writeBytes(compressedBytes, false);
out.close();
return out.toString(); // I would return compressedBytes instead String
}
Try that : 试试看:
//...
String string = "string";
FileOutputStream fos = new FileOutputStream("filename.zip");
GZIPOutputStream gzos = new GZIPOutputStream(fos);
gzos.write(string.getBytes());
gzos.finish();
//...
Save bytes from out with FileOutputStream 使用FileOutputStream从out中保存字节
FileOutputStream fos = new FileOutputStream("gziptest.gz");
fos.write(out.toByteArray());
fos.close();
out.toString() seems suspicious, the result will be unreadable, if you dont care then why not to return byte[], if you do care it would look better as hex or base64 string. out.toString()似乎很可疑,结果将是不可读的,如果你不在乎为什么不返回byte [],如果你关心它会看起来更好作为hex或base64字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.