我需要在java中对图像文件进行一些基本操作。我的要求如下:
- 打开文件。
- 按某种顺序读取字节。
- 在特定偏移处写入更新的字节
- 寻找文件中的偏移量。
文件可以是2 GB图像文件的任何大小。
我想知道,java中的哪个类可以让我灵活地轻松地执行所有这些操作并提高性能,考虑到java中的IO很慢。
目前我正在考虑使用FileChannel,但我不知道它的性能是否像GB那样大的文件。它也用于读取ByteBuffer中的文件字节,但是如果文件足够大,是否适合同时读取所有字节或者应该以块的形式读取。如果我以块的形式读取数据,那么块的大小是多少?
请指导我。
由于
答案 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的缓冲区大小。