不能:org.apache.commons.io.IOUtils出错?

时间:2012-08-29 12:26:54

标签: iso-8859-1 apache-commons-io

为什么这两个代码块会产生不同的字节数组?

Apache Commons IO 2.4:

Charset iso_8859_1 = Charset.availableCharsets().get("ISO-8859-1");
return IOUtils.toByteArray(new FileReader(getResourceFile(filename)), iso_8859_1);

JDK:

Charset iso_8859_1 = Charset.availableCharsets().get("ISO-8859-1");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(baos, iso_8859_1));
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(getResourceFile(filename)), iso_8859_1));
String line;
while ((line = reader.readLine()) != null)
    writer.write(line);

writer.flush();
return baos.toByteArray();

告诉我,我看到了幽灵......

1 个答案:

答案 0 :(得分:1)

尝试使用FileInputStream,因为无法使用FileReader指定charset。

IOUtils.toByteArray(new InputStreamReader(new FileInputStream(getResourceFile(filename)), "ISO-8859-1"), "ISO-8859-1")