2

メモリに収まらない大規模なファイルを操作する必要があります。または、収まる場合でも、ファイルの特定の部分を検索して変更するだけでよいため、すべてをメモリに収める必要はありません。

これを行うための最良の方法は何ですか?

4

1 に答える 1

3

これは、ある種の大きなファイルの真ん中を、メモリにまったく読み込まずに微調整する例です。ただし、少しだけ読みたい場合は、IO.sysreadを参照してください。

TestFile = '/tmp/test'
system "cp /usr/share/dict/words #{TestFile}; chmod +w #{TestFile}"

File.open TestFile, 'r+' do |io|
  io.sysseek 1000000
  io.syswrite 'EASTER EGG!!!'
end
system "grep EASTER.EGG #{TestFile}"

sysreadとsyswriteは、いくつかの状況で役立ちます。

  • さまざまな場所で単一のI/O操作またはさまざまなI/O操作を実行しています(バッファリングは役に立ちません)
  • 大規模なI/O操作を実行しています(バッファリングは少し遅くなります)
  • プログラムは洗練されているか、一般的にブロック指向であり、独自のバッファリングを行っています
于 2012-09-23T03:32:26.170 に答える