gpt4 book ai didi

java - 从 InflaterInputStream 读取并解析结果

转载 作者:行者123 更新时间:2023-11-29 08:59:50 26 4
gpt4 key购买 nike

我是 java 的新手,昨天才开始。因为我非常喜欢边做边学,所以我正在用它做一个小项目。但是我被困在这部分。我用这个函数写了一个文件:

public static boolean writeZippedFile(File destFile, byte[] input) {
try {
// create file if doesn't exist part was here
try (OutputStream out = new DeflaterOutputStream(new FileOutputStream(destFile))) {
out.write(input);
}
return true;

} catch (IOException e) {
// error handlind was here
}
}

现在我已经使用上面的方法成功地写了一个压缩文件,我想把它读回控制台。首先,我需要能够读取解压缩的内容并将该内容的字符串表示形式写入控制台。但是,我有第二个问题,我不想将字符写入第一个 \0 空字符。以下是我尝试读取压缩文件的方式:

try (InputStream is = new InflaterInputStream(new FileInputStream(destFile))) {

}

我完全被困在这里了。问题是,如何丢弃前几个字符直到'\0',然后将解压文件的其余部分写入控制台。

最佳答案

我知道你的数据包含文本,因为你想打印一个字符串表示。我进一步假设文本包含 unicode 字符。如果这是真的,那么您的控制台也应该支持 unicode 才能正确显示字符。

所以你应该首先逐字节读取数据,直到遇到 \0 字符,然后你可以使用 BufferedReader 将其余数据打印为行文本。

try (InputStream is = new InflaterInputStream(new FileInputStream(destFile))) {

// read the stream a single byte each time until we encounter '\0'
int aByte = 0;
while ((aByte = is.read()) != -1) {
if (aByte == '\0') {
break;
}
}

// from now on we want to print the data
BufferedReader b = new BufferedReader(new InputStreamReader(is, "UTF8"));
String line = null;
while ((line = b.readLine()) != null) {
System.out.println(line);
}
b.close();

} catch(IOException e) { // handle }

关于java - 从 InflaterInputStream 读取并解析结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18133374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com