使用Java API 7至读取字节的文件字节(Using Java 7 API to read a

2019-07-02 19:52发布

我有一个2 GB的文件我想在Java中(实际上有四种2GB的文件)来读取。 所以有一个在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的文件,更不用说他们四个人,因此,我想知道是否有任何快捷方式,而无需使用外部库(除非这是唯一的方法)来查看Four文件逐字节,这样的RAM不会过载(否则我结束了一个Java堆错误)。

Answer 1:

按字节读取字节是另一个极端的解决方案,并且将是非常低效的。 您只需要使用一个的BufferedInputStream,并通过大块读取的字节块。

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



Answer 2:

试试内存映射I / O,在本教程中的最后一个例子: http://www.polarsparc.com/pdf/MemoryMappedIOinJava.pdf



文章来源: Using Java 7 API to read a file byte by byte