java - 读取大于内存的大文件怎么读?
PHP中文网
PHP中文网 2017-04-18 10:55:16
0
6
1005
参考:
    有一个1G大小的一个文件,内存限制大小是10M,有序返回频数最高的50个词,该怎么做?

网上有很多该问题的解决方案,都是用分而治之的思想,提到了遍历整个文件。

那么我的问题是:
如果单纯地逐行读取大文件,算是把1G文件全都加载进内存吗?
或者说是读取大于内存的文件应该怎么读?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(6)
黄舟

ここでのメモリはパイプのようなもので、1G のファイルをメモリに渡すだけです。10M はパイプの太さを表します。
そのため、1 行ずつ読み取ると 1G のファイルが 加载进去过 メモリに取り込まれます。

いいねを押す +0
伊谢尔伦

リーリー

ファイルがどんなに大きくても、各行の長さが制限されている限り、ファイル全体を読み取るには時間がかかりますが、メモリをあまり消費しません。

いいねを押す +0
伊谢尔伦

チャンクで読み取り、チャンクごとに 1 つの結果セットを読み取り、最後に結果セットを集計します
テキストを処理している場合は、行数を知っておくとよいでしょう

いいねを押す +0
小葫芦

linux上面有个指令叫做split大きなテキストを同時に小さなファイルにすばやく分割して、便利に処理できます。このアルゴリズムは外部ソートと呼ばれます

いいねを押す +0
刘奇

記憶はメモ用紙のようなものです。記事を書き終えたら、裏返します。 使用済みおよび未使用のデータは破棄されます。

簡単な例では、変数 buff を作成し、そのサイズを設定し、ファイル ストリームを開いて値を入力します。値が入力された後、必要な内容を確認します。見つかった場合は、別の変数でカウントされます。 次に、バフをクリアし、以前に読み取られた位置でコンテンツを再度ロードし続けます...読み取りが完了するまで、統計が完了します。

いいねを押す +0
阿神

さまざまなシステムに対して、メモリより大きいファイルを操作するための API が提供されます。つまり、ファイルはメモリとして扱われます。

内存映射

  • mmap

  • ファイルマッピングの作成

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート