共計 2849 個字符,預計需要花費 8 分鐘才能閱讀完成。
Java 中可以使用壓縮算法對字符串進行壓縮傳輸,常用的壓縮方法有以下幾種:
- GZIP 壓縮:可以使用 Java 的 GZIPOutputStream 類進行壓縮,使用 GZIPInputStream 類進行解壓縮。可以使用以下代碼進行壓縮和解壓縮:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GZIPCompression {public static byte[] compress(String data) throws IOException {ByteArrayOutputStream bos = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(bos);
gzip.write(data.getBytes("UTF-8"));
gzip.close();
byte[] compressedData = bos.toByteArray();
bos.close();
return compressedData;
}
public static String decompress(byte[] compressedData) throws IOException {ByteArrayInputStream bis = new ByteArrayInputStream(compressedData);
GZIPInputStream gzip = new GZIPInputStream(bis);
byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
int len;
while ((len = gzip.read(buffer)) != -1) {sb.append(new String(buffer, 0, len, "UTF-8"));
}
gzip.close();
bis.close();
return sb.toString();}
public static void main(String[] args) throws IOException {String originalString = "This is a test string";
byte[] compressedData = compress(originalString);
String decompressedString = decompress(compressedData);
System.out.println("Original string: " + originalString);
System.out.println("Compressed data: " + new String(compressedData));
System.out.println("Decompressed string: " + decompressedString);
}
}
- Deflater 壓縮:可以使用 Java 的 Deflater 類進行壓縮,使用 Inflater 類進行解壓縮。可以使用以下代碼進行壓縮和解壓縮:
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.zip.Deflater;
import java.util.zip.Inflater;
public class DeflaterCompression {public static byte[] compress(String data) throws IOException {byte[] input = data.getBytes("UTF-8");
Deflater deflater = new Deflater();
deflater.setInput(input);
ByteArrayOutputStream bos = new ByteArrayOutputStream(input.length);
deflater.finish();
byte[] buffer = new byte[1024];
while (!deflater.finished()) {int count = deflater.deflate(buffer);
bos.write(buffer, 0, count);
}
bos.close();
byte[] compressedData = bos.toByteArray();
return compressedData;
}
public static String decompress(byte[] compressedData) throws IOException {Inflater inflater = new Inflater();
inflater.setInput(compressedData);
ByteArrayOutputStream bos = new ByteArrayOutputStream(compressedData.length);
byte[] buffer = new byte[1024];
while (!inflater.finished()) {int count = inflater.inflate(buffer);
bos.write(buffer, 0, count);
}
bos.close();
byte[] decompressedData = bos.toByteArray();
return new String(decompressedData, "UTF-8");
}
public static void main(String[] args) throws IOException {String originalString = "This is a test string";
byte[] compressedData = compress(originalString);
String decompressedString = decompress(compressedData);
System.out.println("Original string: " + originalString);
System.out.println("Compressed data: " + new String(compressedData));
System.out.println("Decompressed string: " + decompressedString);
}
}
這些方法可以將字符串進行壓縮,然后傳輸。在接收端,再進行解壓縮操作,恢復原始字符串。
丸趣 TV 網 – 提供最優質的資源集合!
正文完