1

在代码的最后一部分,我打印了 Reader 给我的内容。但这只是假的,我哪里做错了?

public static void read_impl(File file, String targetFile) {
    // Create zipfile input stream
    FileInputStream stream = new FileInputStream(file);
    ZipInputStream zipFile = new ZipInputStream(new BufferedInputStream(stream));

    // Im looking for a specific file/entry
    while (!zipFile.getNextEntry().getName().equals(targetFile)) {
        zipFile.getNextEntry();
    }

    // Next step in api requires a reader
    // The target file is a UTF-16 encoded text file
    InputStreamReader reader = new InputStreamReader(zipFile, Charset.forName("UTF-16"));

    // I cant make sense of what this print
    char buf[] = new char[1];
    while (reader.read(buf, 0, 1) != -1) {
        System.out.print(buf);
    }
}
4

2 回答 2

1

我猜你出错的地方是认为文件是 UTF-16 编码的。

如果你不解码它们,你能显示一些初始字节值吗?

于 2010-01-25T10:27:34.010 回答
0

您使用 char 数组有点毫无意义,但乍一看它应该可以工作。试试这个:

int c;
while ((c = reader.read()) != -1) {
    System.out.print((char)c);
}

如果这也不起作用,那么您可能得到了错误的文件,或者该文件不包含您认为的内容,或者控制台无法显示它包含的字符。

于 2010-01-25T10:17:01.523 回答