我的值对象有多行说:
color: map-get($colors, primary)
我想将这些行转换为大写并同时写入csv文件。我下面的代码只写了最后一个条目,即" mno"进入o / p文件。因为它覆盖了现有的。
abc
xyz
pqr
mno
如何实现结果,以便andy.csv读取如下:
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;
}
答案 0 :(得分:0)
因为它覆盖了现有的。
是的,但它覆盖了文件。我的猜测是你有一个调用transformFieldValue
的循环,每次输入该方法时,你都会创建一个新文件和一个新的FileWritter
:
转换您班级的File file
和FileWriter fr
成员(即全局变量)。
创建3种方法:createNewFile()
,writeToFile()
,closeFile()
。
一个。 createNewFile()
应包含以下内容:
File file = new File("andy.csv");
FileWriter fr=null;
try {
fr = new FileWriter(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
湾writeToFile()
应包含:
String upperCase = value.toString().toUpperCase();
fr.write(upperCase);
℃。 closeFile()
应包含:
fr.flush();
fr.close();
在需要的地方添加try-catch-finally
块
但如果您想获得更多更好的帮助,请发布适当的Minimal, Complete, and Verifiable example
答案 1 :(得分:0)
你的问题的答案可能是:
更改
fr = new FileWriter(file);
到
fr = new FileWriter(file, true);
"真"将启用附加字节到文件末尾。
不要忘记创建换行符。对于不同的操作系统,这可能有所不同:
fw.write("\r\n");
...例如用于Windows换行符。
BUT:
正如您所提到的,它应该"将这些行转换为大写并同时写入csv文件"这显然违反了单一责任原则。我建议将“准则”放在整个“34岁以上的堆栈交换代码审查”中。