私はphp(1GB +)で大きなテキストファイルを扱っています、私は使用しています
file_get_contents("file.txt", NULL, NULL, 100000000,100);
ファイルの途中からデータを取得するには、ファイル内のデータを元のデータとは異なるものに変更したい場合は、ファイル全体を書き直す必要があります。
データが元よりも大きい場合、データを上書きせずにファイル (可変長) 内のデータを変更するにはどうすればよいですか? ファイル内のさまざまなデータ ブロックとそのバイト位置のインデックスを保持しています。唯一の代替手段は、データの各部分に x 量のバイトを割り当て、それを変更したい場合はそのブロックを書き直すことです...これの問題は、必要以上に多くのスペースを占めることですnullバイト、そして書き込みに時間がかかります...そして、ファイルのサイズが縮小することは決してないため、それでもデータを「削除」する方法は解決されません...ここで本当に助けが必要です...
ファイル内のデータの各部分に接頭辞付きのブロックを使用した場合 (1 mb など)、データを入力したかった100kb
のは .最初の専用ブロック以上を上書きするため、データを削除することはできません...削除することはできません...これが意味をなすことを願っています...代替手段を探しているのではなく、途中でデータを書き込んで変更しようとしていますファイル、へへ…
更新:はい、古いデータを置き換えたいのですが、新しいデータが古いデータよりも拡張されている場合は、残りのデータをファイルにさらにプッシュする必要があります...
これを考慮してください: 0000000HELLODATA00000000 ゼロは空のスペースを表し、何もありません... 今度は、HELLO を SOMETHING に置き換えたいと思います。何かが hello よりも大きいため、hello の開始点に書き込むだけで、hello を超えて拡張され、データの上書きが開始されます.. . したがって、データをファイルにさらにプッシュして、データを上書きせずに何かのためのスペースを確保したいと思います...へへ