【问题标题】:BufferedWriter writes over existing file [duplicate]BufferedWriter 写入现有文件 [重复]
【发布时间】:2014-01-18 13:52:57
【问题描述】:

我正在尝试创建一个程序,它将文本保存在文件中,然后可以将文本添加到文件中。但是,每次我尝试写入文件时,它都会覆盖它并且不写入任何内容。我需要它在其余部分添加我想要的任何信息。

    FileReader input;
    BufferedReader readFile;

    FileWriter output;
    BufferedWriter writeFile;

    try {
    //  input = new FileReader(password_file);
        //readFile = new BufferedReader(input);

        output = new FileWriter(password_file);
        writeFile = new BufferedWriter(output);


        //while ((temp_user= readFile.readLine()) !=null) {
            //temp_pass = readFile.readLine();
        //}

        temp_user = save_prompt.getText();

        temp_pass = final_password;

                                        //Writes to the file
        writeFile.write(temp_user);
        writeFile.newLine();
        writeFile.write(temp_pass);

    }
    catch(IOException e) {
        System.err.println("Error: " + e.getMessage());
    }
}

【问题讨论】:

  • 1) 使用另一个 FileWriter 构造函数,该构造函数采用布尔值第二个参数。 API应该能够帮助你。 2) 你需要稍微提高一下你的谷歌搜索技能。
  • @HovercraftFullOfEels “你需要稍微提高一下你的 Google 搜索技能。” 我有一个理论认为 OP 的搜索被阻止了,因为他们使用了“覆盖”而不是“覆盖'。但这只是一个理论。不要指望我会解释(现在有 5 个)没有搜索就直接回答这个问题的答案。我最好的猜测是“放荡投票”。 ;)
  • @AndrewThompson:不。只需使用他自己的问题主题进行谷歌搜索,它就会带来许多结果,所有结果都带有正确的答案。第一个命中是许多similar stackoverflow questions 中的另一个。同样的问题已经被问过并回答了无数次,而且这个网站上的另一个同样的问题将来对任何人都没有帮助。我坚持我的建议,即他在 Google 技能上多做一点工作。
  • @HovercraftFullOfEels 不会受伤.. :)

标签: java file text bufferedwriter


【解决方案1】:

您寻找的是追加模式。

new FileWriter(file,true); // true = append, false = overwrite

【讨论】:

    【解决方案2】:

    无论何时输入

    new BufferedWriter(output);
    

    或“写”,您正在覆盖“输出”文件。尽量确保在整个程序过程中只声明一次新的 BufferedWriter,并将 append() 而不是 write() 写入文件。

    【讨论】:

      【解决方案3】:

      要将内容附加到文件末尾,请使用FileWriterappend() 方法

      【讨论】:

        【解决方案4】:

        用新内容替换所有现有内容。

        new FileWriter(file);
        

        保留现有内容并在文件末尾追加新内容。

        new FileWriter(file,true);
        

        例子:

            FileWriter fileWritter = new FileWriter(file.getName(),true);
                BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
                bufferWritter.write(data);
                bufferWritter.close();
        

        【讨论】:

          【解决方案5】:

          将 FileWrite 衬里更改为:

          output = new FileWriter(password_file, true);
          

          告诉 FileWriter 追加

          http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-08
            • 1970-01-01
            相关资源
            最近更新 更多