Javaで大きなファイルを処理するためのいくつかのヒントは何ですか
-
06-09-2019 - |
質問
私は、Javaでの大きなファイルに簡単なグレップおよび他の操作を実行する必要があります。私は、Java NIOユーティリティとのことよく知らないが、私はそれは私が使用するために必要なものであると仮定しています。どのようなリソースや役に立つヒントあなたは大きなファイルを読み出し/書き込みのために持っています。また、私はSWTアプリケーションでの作業やGUI上のテキストエリア内でそのデータの一部を表示する必要があるのです。
解決
java.io.RandomAccessFile
は対処することができるはずですので、ファイルポインタのオフセットのための長期使用しています。ただし、それ以外の場合はオーバーヘッドが高くなります時にチャンクをお読みください。 FileInputStream
は同様に動作します。
のJava NIOはあまりにも難しいことではありません。あなたはSelector
sまたは類似の周り混乱する必要はありません。実際には、前JDK7に、あなたは、ファイルを選択することはできません。しかし、マッピングファイルを避けます。そこにはそれをたくさんやろう場合は、32ビットシステム上のアドレス空間を使い果たし、または他の問題に実行されますので、何のアンマップは、ありません(NIOは、GCを呼び出すための試みを行いますが、それはハックのビットです)。
他のヒント
あなたがやっているすべては特別な処理で、一度にファイル全体のチャンクを読んでいる場合は、NiO及びjava.io.RandomAccessFile
はおそらく行き過ぎです。ただ、読んで、一度にファイルの内容ブロックを処理します。あなたがBufferedInputStream
やBufferedReader
を使用していることを確認します。
、その後、あなたはNIOからほとんど利益を得ることができます。
多分少し:apacheのことで VFS の上で見てください。もともとは、ビューのアプリケーションの観点から、ファイルシステムのファサードの後ろのftp-HTTP-FILE-どんなシステムを隠蔽するためのライブラリであることを意味しています。私はなど、検索読み込み、コピーする(FTP経由で)大きなファイルにアクセスすると肯定的な経験、このライブラリを(そのコンテキストで大>は15メガバイトを意味する)持っているので、私はそれをここに言及ます。