我正在使用马里兰大学的FindBug程序,它给了我这个错误。
我已经在很多平台上测试了我的代码并且它可以工作,那么为什么这段代码不好练习,我该怎么做才能改进它?
答案 0 :(得分:4)
它告诉你没有指定编码(字符串如何变成字节)。
如果您在土耳其撰写文本文件,并在乌兹别克斯坦加载,那么您可能会得到不同的结果。相反(例如)您可以通过使用指定的编码将字符串转换为字节来直接指定编码(例如,请参阅String.getBytes)。
答案 1 :(得分:1)
您需要指定字符集
您可以使用OutputStreamWriter
fileWriter = new OutputStreamWriter(new FileOutputStream(file),charset);
答案 2 :(得分:0)
请参阅FileWriter文档:“此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在FileOutputStream上构造一个OutputStreamWriter。” p>
依赖默认字符编码可能被认为是不好的做法。
答案 3 :(得分:0)
使用FileOutputStream
代替FileWriter
。哪个可以使用OutputStreamWriter
包装,allows you to pass an encoding在构造函数中。
否则,正如Jeff所说,数据无法正确加载。
OutputStream fout = new FileOutputStream("test.txt");
OutputStream bout = new BufferedOutputStream(fout);
OutputStreamWriter out = new OutputStreamWriter(bout, "UTF-8");