如何在 java.util.zip 中使用 Deflater
How to use Deflater in java.util.zip
嗨,我是 java 的新手,我正在尝试使用 java.util.zip
中的 Deflater
来压缩字节流。我遵循了 Oracle site 中的一个示例。
try {
// Encode a String into bytes
String inputString = "blahblahblah";
byte[] input = inputString.getBytes("UTF-8");
// Compress the bytes
byte[] output = new byte[100];
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
compresser.end();
// Decompress the bytes
Inflater decompresser = new Inflater();
decompresser.setInput(output, 0, compressedDataLength);
byte[] result = new byte[100];
int resultLength = decompresser.inflate(result);
decompresser.end();
// Decode the bytes into a String
String outputString = new String(result, 0, resultLength, "UTF-8");
} catch(java.io.UnsupportedEncodingException ex) {
// handle
} catch (java.util.zip.DataFormatException ex) {
// handle
}
当我 运行 这段代码时,它给我一个错误,提示 setInput()
、finish()
、deflate()
和 end()
未定义。这是错误信息
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method setInput(byte[]) is undefined for the type Deflater
The method finish() is undefined for the type Deflater
The method deflate(byte[]) is undefined for the type Deflater
The method end() is undefined for the type Deflater
at Deflater.main(Deflater.java:16)
我导入了 java.util.zip
并查看了 Oracle 中的文档 site.It 说存在这些方法。
想不通问题出在哪里。有人可以帮忙吗。
问题是你正在调用你的 main class Deflater
,这对编译器来说是不明确的。有两个同名的 class,你的 class 和 Zip Deflater
。您应该更改此行:Deflater compresser = new Deflater();
到此 java.util.zip.Deflater compresser = new java.util.zip.Deflater();
或简单地更改主 class.
的名称
嗨,我是 java 的新手,我正在尝试使用 java.util.zip
中的 Deflater
来压缩字节流。我遵循了 Oracle site 中的一个示例。
try {
// Encode a String into bytes
String inputString = "blahblahblah";
byte[] input = inputString.getBytes("UTF-8");
// Compress the bytes
byte[] output = new byte[100];
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
compresser.end();
// Decompress the bytes
Inflater decompresser = new Inflater();
decompresser.setInput(output, 0, compressedDataLength);
byte[] result = new byte[100];
int resultLength = decompresser.inflate(result);
decompresser.end();
// Decode the bytes into a String
String outputString = new String(result, 0, resultLength, "UTF-8");
} catch(java.io.UnsupportedEncodingException ex) {
// handle
} catch (java.util.zip.DataFormatException ex) {
// handle
}
当我 运行 这段代码时,它给我一个错误,提示 setInput()
、finish()
、deflate()
和 end()
未定义。这是错误信息
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method setInput(byte[]) is undefined for the type Deflater
The method finish() is undefined for the type Deflater
The method deflate(byte[]) is undefined for the type Deflater
The method end() is undefined for the type Deflater
at Deflater.main(Deflater.java:16)
我导入了 java.util.zip
并查看了 Oracle 中的文档 site.It 说存在这些方法。
想不通问题出在哪里。有人可以帮忙吗。
问题是你正在调用你的 main class Deflater
,这对编译器来说是不明确的。有两个同名的 class,你的 class 和 Zip Deflater
。您应该更改此行:Deflater compresser = new Deflater();
到此 java.util.zip.Deflater compresser = new java.util.zip.Deflater();
或简单地更改主 class.