Javaで大きなファイルを処理するためのいくつかのヒントは何ですか

StackOverflow https://stackoverflow.com/questions/586409

  •  06-09-2019
  •  | 
  •  

質問

私は、Javaでの大きなファイルに簡単なグレップおよび他の操作を実行する必要があります。私は、Java NIOユーティリティとのことよく知らないが、私はそれは私が使用するために必要なものであると仮定しています。どのようなリソースや役に立つヒントあなたは大きなファイルを読み出し/書き込みのために持っています。また、私はSWTアプリケーションでの作業やGUI上のテキストエリア内でそのデータの一部を表示する必要があるのです。

役に立ちましたか?

解決

java.io.RandomAccessFileは対処することができるはずですので、ファイルポインタのオフセットのための長期使用しています。ただし、それ以外の場合はオーバーヘッドが高くなります時にチャンクをお読みください。 FileInputStreamは同様に動作します。

のJava NIOはあまりにも難しいことではありません。あなたはSelectorsまたは類似の周り混乱する必要はありません。実際には、前JDK7に、あなたは、ファイルを選択することはできません。しかし、マッピングファイルを避けます。そこにはそれをたくさんやろう場合は、32ビットシステム上のアドレス空間を使い果たし、または他の問題に実行されますので、何のアンマップは、ありません(NIOは、GCを呼び出すための試みを行いますが、それはハックのビットです)。

他のヒント

あなたがやっているすべては特別な処理で、一度にファイル全体のチャンクを読んでいる場合は、NiO及びjava.io.RandomAccessFileはおそらく行き過ぎです。ただ、読んで、一度にファイルの内容ブロックを処理します。あなたがBufferedInputStreamBufferedReaderを使用していることを確認します。

あなたは何をしているかやってファイル全体を読まなければならない、とあなたは一度に一つのファイルを読み込む場合は、

、その後、あなたはNIOからほとんど利益を得ることができます。

トピックオフ

多分少し:apacheのことで VFS の上で見てください。もともとは、ビューのアプリケーションの観点から、ファイルシステムのファサードの後ろのftp-HTTP-FILE-どんなシステムを隠蔽するためのライブラリであることを意味しています。私はなど、検索読み込み、コピーする(FTP経由で)大きなファイルにアクセスすると肯定的な経験、このライブラリを(そのコンテキストで大>は15メガバイトを意味する)持っているので、私はそれをここに言及ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top