我试图用Java将一些数据输出到文件中,但不明白为什么当我运行此代码时。。。
try {
File file = new File("demo.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(file));
int i = 127;
int j = 128;
System.out.println(Integer.toHexString(i));
System.out.println(Integer.toHexString(j));
out.write(i);
out.write(j);
out.close();
} catch (IOException e) {}
以下内容输出到控制台日志:
7f
80
但是当我用十六进制编辑器打开文件demo.txt时,我会看到字节7f和3f。为什么out.write()正确地输出了大多数int值(示例127),却改变了其他值(示例128)?如何将数据直接写入文件?
FileWriter应该用于编写字符流。如果您正在尝试写入二进制数据,那么FileOutputStream是合适的。如果您用FileOutputStream替换FileWriter,用BufferedOutputStream替代BufferedWriter,您会发现数据是按预期写入的。
FileWriter具有字符和编码意识,这意味着它可以转换您通过它传递的数据以匹配字符编码。但老实说,我不知道这里到底发生了什么变化。