2016-05-19 8 views
1

javaの画像ファイルに対して基本的な操作を行う必要があります。私の要件は次のとおりです:
- ファイルを開きます。 - 何らかの順序でバイトを読み込みます。 - 特定のオフセットで更新されたバイトを書き込みます。 - ファイル内のオフセットでシークします。JavaのファイルIOの最適な方法は何ですか

ファイルは、2 GBのイメージファイルのような任意のサイズにすることができます。

私が知りたいのは、javaのどのクラスが、これらの操作をすべて簡単に実行できるか、パフォーマンスの効率性を提供することができるかを知りたいと思っています。

現在、私はFileChannelのを検討していますが、私はGBのように大きなサイズのファイルとその性能について知りません。また、ByteBuffer内のファイルバイトを読み取るためにも使用されますが、ファイルが十分大きければ、同時にすべてのバイトを読み取るのが適切であるか、またはチャンクで読み込む必要があります。データをチャンクで読み込むと、チャンクのサイズはどれくらいですか?

私をご案内ください。

おかげ

答えて

1

おそらくRandomAccessFileを使用する必要がありますが、それは位置によってシークと書き込みをサポートしています。また、JavaのIOを遅く記述するのは正確ではないと思います。java.ioを適切に使用すると、Cのようなパフォーマンスを達成できることがよくあります。

0

は、Java-8を使用していない場合は、Javaの8ストリーム機能

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

を使用することができますが。私はチャンクでデータを読み取る場合は、java.nioパッケージ

を使用し、チャンクの適切なサイズは何ですか?

あなただけの1キロバイトのバッファサイズを使用していますすることができます。

関連する問題