我试图用 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 是合适的。如果您将 FileWriter 替换为 FileOutputStream 并将 BufferedWriter 替换为 BufferedOutputStream,您会发现数据按照您的预期写入。
FileWriter 是字符和编码感知的,这意味着它可以转换您通过它的数据以匹配字符编码。但老实说,我不知道这里到底发生了什么转变。
关于java - 为什么 out.write() 会改变 Java 中的 int 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398219/