使用Java 7 API读取字节字节



我有一个我想在Java(实际上是四个2GB文件)中读取的2 GB文件。因此,Java 7中有一个新功能,可以让我一次阅读所有字节。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class reconstructor {
    public static void main(String[] args) throws IOException {
        Path p = Paths.get("test.txt");     
        for (int i = 0; i < 1; i++) {
            byte[] b = Files.readAllBytes(p);
            Files.write(p, b, StandardOpenOption.APPEND);
        }
    }
}

这是一个愚蠢的程序,它会在其中读取单个字节前输入的文件,并不断读取该文件并将其读取的内容附加到同一文件中。现在显然,RAM不够大,无法一次读取2GB文件,更不用说四个文件了,所以我想知道是否有任何快速方法,而无需使用外部库(除非这是唯一的方法)BIAD BYTE的文件BYTE使得RAM不会被超载(否则我最终会出现Java Heap错误)。

byte读取字节是另一个极端解决方案,并且效率很低。您应该简单地使用BufferedInputStream,然后读取块的字节块。

阅读有关字节流的Java IO教程。

尝试映射内存i/o,本教程中的最后一个示例:http://www.polarsparc.com/pdf/memorymopedioinjava.pdf

最新更新