我正在使用一个程序来分析我的Java代码,我不理解错误或如何解决它

我正在使用马里兰大学的FindBug程序,它给了我这个错误。

我已经在很多平台上测试了我的代码并且它有效,所以为什么这个代码不好练习,我该怎么做才能改进它?

代码截图

它告诉你没有指定编码(如何将字符串转换为字节)。

如果您在土耳其写一个文本文件,并在乌兹别克斯坦加载它,那么您可能会得到不同的结果。 相反(例如)您可以通过使用指定的编码将字符串转换为字节来直接指定编码(有关示例,请参阅String.getBytes )。

你需要指定字符集

你可以使用OutputStreamWriter

fileWriter = new OutputStreamWriter(new FileOutputStream(file),charset); 

请参阅FileWriter文档:“此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在FileOutputStream上构造OutputStreamWriter。”

依赖于默认字符编码可能被认为是不好的做法。

使用FileOutputStream而不是FileWriter 。 可以使用OutputStreamWriter进行包装,它允许您在构造函数中传递编码 。

否则,正如Jeff所说,数据无法正确加载。

 OutputStream fout = new FileOutputStream("test.txt"); OutputStream bout = new BufferedOutputStream(fout); OutputStreamWriter out = new OutputStreamWriter(bout, "UTF-8");