java

时间:2016-05-19 09:07:18

标签: java file io large-files filechannel

我需要在java中对图像文件进行一些基本操作。我的要求如下:
- 打开文件。 - 按某种顺序读取字节。 - 在特定偏移处写入更新的字节 - 寻找文件中的偏移量。

文件可以是2 GB图像文件的任何大小。

我想知道,java中的哪个类可以让我灵活地轻松地执行所有这些操作并提高性能,考虑到java中的IO很慢。

目前我正在考虑使用FileChannel,但我不知道它的性能是否像GB那样大的文件。它也用于读取ByteBuffer中的文件字节,但是如果文件足够大,是否适合同时读取所有字节或者应该以块的形式读取。如果我以块的形式读取数据,那么块的大小是多少?

请指导我。

由于

2 个答案:

答案 0 :(得分:1)

您可能应该使用TwelveMonkeys ImageIO JPEG plugin,它支持按位置搜索并写入。另外,我认为在Java中描述IO的速度很慢是正确的,如果正确使用java.io,通常可以实现类似C的性能。

答案 1 :(得分:0)

您可以使用Java 8 Stream功能

Stream<String> lines = Files.lines(Paths.get(args[1]));

但是,如果您不使用Java-8。您使用java.nio

  

如果我以块的形式读取数据,那么块的大小是多少?

您可以使用仅1 KB的缓冲区大小。