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 に答える