修改文件csv失败

时间:2017-12-12 06:48:54

标签: java csv bufferedreader bufferedwriter

我创建的服务包含修改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 但失败了。当我打开文件时,空字符串。感谢。

1 个答案:

答案 0 :(得分:0)

使用不同的名称保存修改后的文件,操作完成后,用新的临时文件替换旧文件:

import static java.nio.file.StandardCopyOption.*;
...
Files.move(source, target, REPLACE_EXISTING);

https://docs.oracle.com/javase/tutorial/essential/io/move.html