这是我的代码,将内容作为一个字节加载,然后将整数转换为十六进制值:
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”,我该如何解决?
答案 0 :(得分:2)
不,你正在读取换行符 - 就是“d”后跟“a”是 - 回车后跟换行符(“\ r \ n”)。
但是,您目前假设该文件位于ISO-8859-1中。要读取文本文件,您几乎应该始终使用Reader
而不是直接从流中读取字节。我建议使用InputStreamReader
,明确指定编码。例如:
InputStreamReader reader = new InputStreamReader(
new FileInputStream(file), "UTF-8");
您可能还想将阅读器包裹在BufferedReader
中,这样可以轻松读取行。或者,我可以在Guava(特别是CharStreams
)中彻底推荐实用程序类,这样可以更轻松地处理这样的文件。