在代码的最后一部分中,我打印了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);
}
}
答案 0 :(得分:1)
我猜你错误的地方是相信文件是UTF-16编码的。
如果不对它们进行解码,可以显示几个初始字节值吗?
答案 1 :(得分:0)
你使用char数组有点没用,虽然乍一看它应该有效。试试这个:
int c;
while ((c = reader.read()) != -1) {
System.out.print((char)c);
}
如果这也不起作用,那么你可能得到了错误的文件,或者文件中没有你想象的那样,或者控制台无法显示它包含的字符。