为什么out.write()会改变Java中的int值?
我试图用Java将一些数据输出到文件中,但不明白为什么在运行此代码时为什么out.write()会改变Java中的int值?,java,io,Java,Io,我试图用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
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),但改变了其他int值(示例128)?如何将数据直接写入文件?应使用FileWriter写入字符流。如果您正试图写入二进制数据,则FileOutputStream是合适的。如果将FileWriter替换为FileOutputStream,将BufferedWriter替换为BufferedOutputStream,则会发现数据的写入方式与预期一致
FileWriter支持字符和编码,这意味着它可以转换您通过它传递的数据以匹配字符编码。但老实说,我不知道这里到底发生了什么变化。改变从128开始的事实应该会给我们提供一些关于发生了什么的线索;127是7位ASCII所能表示的极限。您是否尝试过用DataOutputStream写入二进制数据?