如何不覆盖文件(使用追加模式)

时间:2015-03-24 07:52:13

标签: java io overwrite filewriter

这是我目前的代码:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFile {
    public static void main(String[] args) {

    }

    public void Write(String content) {
        BufferedWriter bw = null;
        try {

            //Specify the file name and path here
            File file = new File("C:\\Users\\Gbruiker\\Dropbox\\Java\\Rekenen\\src\\sommen.txt");

                     /* This logic will make sure that the file 
                      * gets created if it is not present at the
                      * specified location*/
            if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file);
            bw = new BufferedWriter(fw);
            bw.append(content);
            bw.append("\n");
            System.out.println("File written Successfully");

        }
        catch (IOException ioe) {
            ioe.printStackTrace();
        }
        finally {
            try {
                if (bw != null)
                    bw.close();
            }
            catch (Exception ex) {
                System.out.println("Error in closing the BufferedWriter" + ex);
            }
        }
    }
}

如何制作它以便它不会覆盖文本文件中的当前文本?

有什么建议吗? 我是以正确的方式做到的吗? 程序必须向文件添加一些文本,但不能覆盖当前内容。因为现在它正在覆盖当前内容。

2 个答案:

答案 0 :(得分:5)

使用new FileWriter(file, true);构造函数,true用于附加到文件而不是覆盖。

答案 1 :(得分:0)

FileWriter fw = new FileWriter(file);更改为FileWriter fw = new FileWriter(file,true);

布尔值附加模式。

来自javadoc

  

public FileWriter(String fileName,             布尔附加)              throws IOException在给定文件名的情况下构造FileWriter对象,该文件名带有指示是否附加数据的布尔值   书面。参数:fileName - String系统相关   filename.append - 如果为true则为boolean,然后将数据写入   文件的结尾而不是开头。抛出:IOException - 如果   命名文件存在但是是目录而不是常规文件,   不存在但无法创建,或无法打开任何   其他原因