【问题标题】:How to append to the end of a file in java?如何在java中追加到文件的末尾?
【发布时间】:2011-08-19 06:18:06
【问题描述】:
...
Scanner scan = new Scanner(System.in);
System.out.println("Input : ");
String t = scan.next();

FileWriter kirjutamine = new FileWriter("...");
BufferedWriter out = new BufferedWriter(writing);
out.write(t)    
out.close();
...

如果我在文件中写入一些字符串,那么它会转到第一行。但是如果再次运行程序,它会将新文本写入前一个文本(到第一行)。我想做:如果我插入一些东西,那么它会转到下一行。例如:

after 1 input) text1

after 2 input) text1

               text2

等等……

我应该在代码中更改什么? 谢谢!

【问题讨论】:

    标签: java file-io bufferedreader


    【解决方案1】:
    java.io.PrintWriter pw = new PrintWriter(new FileWriter(fail, true));
    

    应该这样做。在现有的 pw 行上使用它。

    编辑:正如 cmets 中所解释的,这会导致以下事情发生:

    1. 正在创建 FileWriter,可选的“附加”标志设置为真。这会导致 FileWriter 不会覆盖文件,而是打开它以追加并将指针移动到文件末尾。

    2. PrintWriter 正在使用此 FileWriter(而不是使用您传递的文件创建自己的文件。)

    (这里有很多编辑。我有几次不确定这个问题。)

    【讨论】:

    【解决方案2】:

    我建议你在 FileWriter 构造函数中使用append 标志。

    您也可以在每次写入之间添加换行符;)

    【讨论】:

      【解决方案3】:

      你为什么不使用RandomAccessFile? 在RandomAccessFile中,可以在任意位置进行读/写操作。文件指针可以通过seek()方法移动到任意位置。您必须在使用它时指定文件打开模式。 示例:

      RandomAccessFile raf = new RandomAccessFile("anyfile.txt","rw"); // r for read and rw for read and write.
      

      要将文件指针指向 EOF,您必须使用 seek()。

      raf.seek(raf.length());
      

      【讨论】:

        【解决方案4】:

        不要使用BufferedWriter,而是使用

        PrintWriter out = new PrintWriter(kirjutamine);
        out.print(t);
        out.close();
        

        【讨论】:

        • 不,AFAIU 这将从文件的开头写入,而不是结尾
        猜你喜欢
        • 2023-03-02
        • 2013-10-26
        • 1970-01-01
        • 2011-11-25
        • 2014-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多