Java - Buffered Writer 写入多维数据集不是 int

Java - Buffered Writer writes cubes Not int

我在Java.

中写入文件有点问题

我使用 File f = new File(path); 创建了一个新文件,并且 写入该文件的 BufferedWriter。还有一个 int i = 1; 现在缓冲写入器(文件写入器)应将 int i 写入文件 但它没有,它写了 CUBES!就像这个■。 当 Scanner 读取文件时,它读取那个立方体,并发生错误,

这是一个例子:

int i = 1;
File f = new File(path);
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(i);

int b = 0;
Scanner s = new Scanner(new FileReader(f));
b = s.nextInt();
//end

但出于某种原因,它写入了一个立方体 ■ 而不是数字 1,这就是扫描仪无法读取它的原因。

知道为什么会这样吗? -谢谢你的帮助。 ■

write 方法不会将整数值写入文本,而是将整数解释为字符代码。

你最好用PrintWriter,这样更舒服。有了它,您可以使用与 System.out.

中相同的打印方法
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f)));
writer.print(i);

您还应该知道,您隐式使用了默认平台编码,即 Windows 的 Cp1252 (Windows ANSI),Linux 通常为 UTF-8。为避免意外行为,建议始终明确设置字符编码。然后你最终得到:

PrintWriter writer = new PrintWriter(new BufferedWriter(
    new OutputStreamWriter(new FileOutputStream(f), "UTF-8")));

这有点复杂,但文件编码在您的控制之下。