使用 java 合并多个文件

Merge multiple files using java

我有一个分段文件。我必须将它们全部合并到文件中。我正在使用 RandomAccessFile 合并它们并且它工作正常但是对于较大的文件它非常慢。

这是我用来合并它们的代码:

    RandomAccessFile outFile = new RandomAccessFile(filename, "rw");

    long len = 0;

    //inFiles is a LinkedList<String> conatining all file part names

    for (String inFileName : inFiles) {

        RandomAccessFile inFile = new RandomAccessFile(inFileName, "r");
        int data;

        outFile.seek(len);

        while ((data = inFile.read()) != -1) {
            outFile.writeByte(data);
        }

        len += inFile.length();

        inFile.close();

    }


    outFile.close();

是否有任何其他合并文件的方法可能比此方法更快?... 请帮我优化这段代码。

正如 Nemo_64 指出的那样,您一次使用 read() 字节,这在大文件上会非常慢。由于您并没有真正使用 RandomAccessFile 进行随机访问,因此仅使用顺序流 IO 就足够了,例如:

try(OutputStream out = Files.newOutputStream(Paths.get(filename), StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
    for (String inFileName : inFiles) {
        Files.copy(Paths.get(inFileName), out);
    }
}