在 Java 中将一个文本文件附加到另一个文本文件

Appending one text file to another in Java

晚上好,

我对在这里提问完全陌生,如果我做错了,我深表歉意。 我正在尝试将一个完整的 .txt 文件附加到另一个文件的末尾,换行,而不重写内容。

例如,我在one.txt

中有这个
TEST 1 00001 BCOM

我在 two.txt,

中有这个
TEST 2 00001 BCOM

这是我发现唯一可以copy/overwrite到另一个文件的工作代码, 我复制的所有其他文件,重新处理文件路径和名称并尝试过,但它对我不起作用。 Java.

我还是初学者
import java.io.*;
class CompileData {
    public static void main(String args[]) {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("one.txt");
            fw = new FileWriter("two.txt");
            int c = fr.read();
            while(c!=-1) {
                fw.write(c);
                c = fr.read();
            }
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            close(fr);
            close(fw);
        }
    }
    public static void close(Closeable stream) {
        try {
            if (stream != null) {
                stream.close();
            }
        } catch(IOException e) {
        }
    }
}

使用此代码,而不是为 two.txt

获取此代码
TEST 1 00001 BCOM
TEST 2 00002 BCOM

我只得到 two.txt

TEST 1 00001 BCOM

我们将不胜感激任何帮助、提示、指示和答案!

为此,您可以使用 FileWriter 的附加功能 - 通过调用接受布尔值的参数化构造函数是否附加。

点这里File Writer - append

import java.io.*;

class CompileData {
    public static void main(String args[]) {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("one.txt");
            fw = new FileWriter("two.txt",true);
            int c = fr.read();
            fw.write("\r\n");
            while(c!=-1) {
                fw.write(c);
                c = fr.read();
            }
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            close(fr);
            close(fw);
        }
    }
    public static void close(Closeable stream) {
        try {
            if (stream != null) {
                stream.close();
            }
        } catch(IOException e) {
        }
    }
}

输出

测试 2 00002 BCOM
测试 1 00001 BCOM

如果您想追加到文件开头,您可以使用 RandomAccessFile 追加到所需位置。此处有更多详细信息 - RandomAccessFile API

RandomAccessFile f = new RandomAccessFile(new File("two.txt"), "rw");
f.seek(0); 
f.write("TEST 1 00001 BCOM".getBytes());
f.close();