Извлечение файла в кодировке UTF-16 из ZIP-архива на Java - PullRequest
1 голос
/ 25 января 2010

В последнем разделе кода я печатаю то, что дает мне Читатель. Но это просто подделка, где я ошибся?

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);
    }
}

Ответы [ 2 ]

1 голос
/ 25 января 2010

Я предполагаю, что если вы ошиблись, то поверили, что файл был в кодировке UTF-16.

Можете ли вы показать несколько начальных байтовых значений, если вы их не декодируете?

0 голосов
/ 25 января 2010

Использование массива char немного бессмысленно, хотя на первый взгляд оно должно работать. Попробуйте вместо этого:

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

Если это тоже не сработает, то, возможно, вы получили не тот файл, или файл не содержит того, что, как вы думаете, он делает, или консоль не может отобразить символы, которые в нем содержатся.

...