使用Java 7 API逐字节读取文件

我有一个2 gb文件,我想用Java读取(实际上是4个2gb文件)。 所以Java 7中有一个新function可以让我一次读取所有字节。

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文件,更不用说其中四个了,所以我想知道是否有任何快速方法,不使用外部库(除非这是唯一的方法)阅读四个逐字节文件,以便RAM不会过载(否则我最终会出现Java堆错误)。

逐字节读取是另一种极端的解决方案,并且效率非常低。 您应该只使用BufferedInputStream,并按块读取字节块。

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

尝试内存映射I / O,这是本教程的最后一个示例: http : //www.polarsparc.com/pdf/MemoryMappedIOinJava.pdf