java将多行写入CSV
我的值对象有多行,例如:
abc
xyz
pqr
mno
我想将这些行转换成大写,同时写入csv文件。下面的Me代码只将最后一个条目即“mno”写入o/p文件。因为它正在覆盖现有的
private Object transformFieldValue(Object value) throws IOException {
String upperCase = value.toString().toUpperCase();
File file = new File("andy.csv");
FileWriter fr=null;
try {
fr = new FileWriter(file);
fr.write(upperCase);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fr.flush();
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return upperCase;
}
如何达到让安迪满意的结果。csv的内容如下:
ABC
XYZ
PQR
MNO
# 1 楼答案
你的问题的答案可能是:
改变
到
“true”将允许在文件末尾追加字节
不要忘记创建换行符。对于不同的操作系统,这可能会有所不同:
。。。e、 g.对于窗口换行符
但是:
正如您提到的,它应该“将这些行转换为大写,同时写入csv文件”,这显然违反了单一责任原则。我建议在“Stack Exchange代码审查”中对整个代码进行试用
# 2 楼答案
是的,但它覆盖了文件。我猜您有一个调用
transformFieldValue
的循环,每次输入该方法时,您都在创建一个新文件和一个新的FileWritter
:转换类的
File file
和FileWriter fr
成员(即全局变量)创建3个方法:
createNewFile()
,writeToFile()
,closeFile()
a.
createNewFile()
应包含以下内容:b.
writeToFile()
应包含:c.
closeFile()
应包含:在需要的地方添加
try-catch-finally
块但是如果你想要更多更好的帮助,请发布一个合适的Minimal, Complete, and Verifiable example