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

时间:2016-12-11 10:18:43

标签: java file int bufferedwriter

我在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,这就是为什么扫描仪无法读取它。

任何想法为什么会发生这种情况? - 谢谢你的帮助。 ■

1 个答案:

答案 0 :(得分: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")));

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