我创建的服务包含修改CSV文件。我在每行的最后一列添加值,但是我在覆盖文件时发现了问题。如果一个新文件与旧文件的名称不同,那么它的成功但是我希望该文件具有相同的名称。如何解决这个问题?
public void modify() {
BufferedReader br=null;
BufferedWriter bw=null;
try {
File file = new File("C:\\Users\\c76266\\Documents\\bobby\\text\\sample2.csv");
File newfile = new File("C:\\Users\\c76266\\Documents\\bobby\\text\\sample2_new.csv");
br = new BufferedReader(new InputStreamReader(new FileInputStream(file))) ;
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newfile)));
String line = null;
String [] addedColumn = {"newstring1", "newstring2"};
int i=0;
while((line = br.readLine())!=null){
String result = "\t"+addedColumn[i];
bw.write(line+result+System.lineSeparator());
i++;
}
} catch(Exception e){
System.out.println(e);
} finally {
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在此代码中,运行良好,因为文件和新文件是不同的名称。 sample2.csv
和 sample2_new.csv
但我希望新文件 sample2.csv
但失败了。当我打开文件时,空字符串。感谢。
答案 0 :(得分:0)
使用不同的名称保存修改后的文件,操作完成后,用新的临时文件替换旧文件:
import static java.nio.file.StandardCopyOption.*;
...
Files.move(source, target, REPLACE_EXISTING);
https://docs.oracle.com/javase/tutorial/essential/io/move.html