使用换行符加载文件

时间:2011-12-21 06:35:25

标签: java

这是我的代码,将内容作为一个字节加载,然后将整数转换为十六进制值:

    try {
    InputStream is = new FileInputStream(file);
        while ((byteRead = is.read()) != -1) {
            //System.out.print(((char) byteRead).charAt(0));
            String temp = Character.toString((char) byteRead);
            ta.append(Character.toString((char) byteRead));
            System.out.print(Character.toString((char) byteRead));

            ta2.append(Integer.toHexString(byteRead) + " ");

        }
    }

输出:41 42 43 d a 31 32 33

但似乎,新行字符无法读取,我知道新行字符十六进制值为“0A”,我该如何解决?

1 个答案:

答案 0 :(得分:2)

不,你正在读取换行符 - 就是“d”后跟“a”是 - 回车后跟换行符(“\ r \ n”)。

但是,您目前假设该文件位于ISO-8859-1中。要读取文本文件,您几乎应该始终使用Reader而不是直接从流中读取字节。我建议使用InputStreamReader,明确指定编码。例如:

InputStreamReader reader = new InputStreamReader(
    new FileInputStream(file), "UTF-8");

您可能还想将阅读器包裹在BufferedReader中,这样可以轻松读取行。或者,我可以在Guava(特别是CharStreams)中彻底推荐实用程序类,这样可以更轻松地处理这样的文件。