我在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,这就是为什么扫描仪无法读取它。
任何想法为什么会发生这种情况? - 谢谢你的帮助。 ■
答案 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")));
这有点复杂,但文件编码在您的控制之下。