我想我需要使用
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF8"));
但是当我将代码更改为BufferedWriter时,行out.write(e);
出现了问题。
我的代码:
public void writeToFile(String fileName, List<ThongtinKhachThue> resultttkt){
System.out.println("Begin....");
try {
PrintWriter out = new PrintWriter(new File(fileName));
out.println("//thue.txt");
for(ThongtinKhachThue e : resultttkt){
out.println(e);
}
out.println("Tổng khách thuê phòng: "+TongKhachThue());
out.println("Tổng tiền thu: "+TongTienThuDuoc()+"$");
out.flush();
out.close();
System.out.println("End...");
} catch (FileNotFoundException e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
它在文件中显示的内容:
//thue.txt
K1, A1002, 47.05$
K2, A0003, 67.0$
K3, A1001, 31.0$
K4, null, 0.0$
T?ng khách thuê ph?ng: 3
T?ng ti?n thu: 145.05$
我希望它展示的是:
//thue.txt
K1, A1002, 47.05$
K2, A0003, 67.0$
K3, A1001, 31.0$
K4, Không thuê
Tổng khách thuê: 03
Tổng tiền thu: 145.05$
如何将utf-8写入文件并将“3”更改为“03”?
答案 0 :(得分:3)
要写03
(前导零)而不是3
,您可以使用
int myInteger = 3;
out.println("Some value: " + String.format("%02d", myInteger) );
有关语法的详细信息,请参阅String.format(...) documentation。
答案 1 :(得分:0)
使用,
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path),"UTF-8"));
这样你可以设置编码。
答案 2 :(得分:0)
您需要使用此link
中提到的字符集名称它将标准字符集称为“UTF-8”而不是“UTF8”。
因此将其更改为“UTF-8”并且它将起作用。
以下供您参考:
答案 3 :(得分:0)
试试这个
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("outfilename"), "UTF-8"));
try {
out.write(aString);
} finally {
out.close();
}
答案 4 :(得分:0)
既然你已经知道你应该使用BufferedWriter,因为它让你选择了编码,我不知道这里有什么问题。
我只想补充一点,而不是将“UTF8”写成一个容易出错的字符串,从Java 1.7开始,可以使用类StandardCharsets来获取所有标准字符集: )
如果Java 1.7不是一个选项,您也可以使用Guava的Charsets类。