java怎么实现超长字符串压缩及解压
时间: 2024-01-23 12:02:34 浏览: 29
Java中可以使用GZIP来实现超长字符串的压缩和解压。GZIP是一种数据压缩算法,它使用Lempel-Ziv算法和哈夫曼编码来进行数据压缩。以下是压缩和解压的示例代码:
压缩:
```java
public static String compress(String str) {
if (str == null || str.length() == 0) {
return str;
}
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
return out.toString("ISO-8859-1");
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
```
解压:
```java
public static String decompress(String compressed) {
if (compressed == null || compressed.length() == 0) {
return compressed;
}
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(
compressed.getBytes("ISO-8859-1"));
GZIPInputStream gunzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = gunzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
// toString()使用平台默认编码,也可以显式指定如toString("UTF-8")
return out.toString();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
```
以上代码中,压缩函数将字符串转换为字节数组,然后使用GZIPOutputStream进行压缩,最后将压缩后的字节数组转换为字符串并返回。解压函数将压缩后的字符串转换为字节数组,然后使用GZIPInputStream进行解压,最后将解压后的字节数组转换为字符串并返回。