2016-06-15 14 views
1

私は地理情報(聞いたことがある人のためのGeonameプロジェクト)で構成された非常に大きなテキストファイル(約850万行、1 GB)を持っています。現在私はBufferedReaderを使用しており、私のプログラムでは10000行を快適に読み込み、必要なデータを表示することができます。しかし、私はファイル全体の各行を読み込んで検索しなければならず、50000行以上をテストすると、プログラムは非常に遅くなり、基本的に役に立たなくなります。ファイルを分割して塊で読み込んで実行時間を短縮するためのオプションは何ですか?大きなテキストファイルをチャンクで読む処理

+1

あなたはまだファイルを分割することは、すべての行を通過する必要がある場合に役立つと思いますか? 'BufferedReader'はすでに" chunking "(したがって' Buffered'という名前)をしています。もしあれば、一つのファイルではなくいくつかのファイルを操作しなければならないので、ファイルを分割するのが遅くなります。 – Kayaman

+0

http://www.baeldung.com/java-read-lines-large-file – Fildor

+0

私はKayamanが言ったことに同意します。 'BufferedReader'は既にチャンクを読み込みます。あなたは記憶上の問題にぶつかっているようです。利用可能なメモリ量を単純に増やしてみましたか?それでも問題が解決しない場合は、[mcve]を投稿してください。何が起きているのかがわかります。 –

答えて

-1

java.nio.Bufferクラスとそのサブクラスについて読んでください。とりわけ、直腸および非直腸の緩衝液およびその使用の賛否両論に注意を払う。ダイレクトバッファは、ディスクへの直接アクセスと非常に大きなファイルをチャンクで処理する能力を提供します。しかし、この素晴らしい能力には、いくらかの価格とメモリリークのリスクが伴います。しかし、私はそれがあなたが必要とするかもしれないものだと思います。ここをクリックしてください:https://docs.oracle.com/javase/8/docs/api/java/nio/Buffer.html

関連する問題