

こんな時こそ体調を崩しやすいものです。ちなみに、私はちゃんと風邪を引きました

早く治さないと駄目ですね・・・・
こんにちは、ハラです。
今回は、何回かぶりにRubyについて書いてみたいと思います。
以前、色々な種類のテキストデータを読み込み、バイナリデータとして出力する方法を書いてみました。
続きとして、その出力したバイナリデータを合体

サンプルとして、「3つのファイルを読み込み、ファイルサイズを付加して中身を繋げる」スクリプトを
書いてみます

# 繋ぎ合わせるファイルの名前
fileNameArray = ["file1.dat", "file2.dat", "file3.dat"]
# 書き込み先のファイルをバイナリで開く
File.open("result.dat", "wb") do | dstFile |
# 繋ぎ合わせるバイナリファイルを順に開く
fileNameArray.each do | fileName |
File.open(fileName, "rb") do | srcFile |
# データを読み込み
data = srcFile.read
# データサイズを書き込み
dstFile.write [data.size].pack("L")
# データを書き込み
dstFile.write data
end
end
end
実行して貰えれば、3つのファイルを繋げた1つのファイルが出来上がることが確認できると思います

このスクリプトでは、読み込むファイルを固定していたり、
ファイルの中身に関する情報がサイズしかありません

読み込むファイルを「指定したディレクトル内のファイル全部」に変えたり、
ファイルサイズの直後にファイルの種類を追加したりすれば、
さらに汎用性が増していきますね

ちなみに、複数のファイルを1つのファイルにする理由は色々あるのですが、
その1つに「少ないファイル数の方が、読み込み時間が少なくなる」というのがあります

例えば、10000バイトのファイルを1つ読み込むより、
100バイトのファイルを100個読み込む方が多く時間がかかります

提出作品をハードディスクから実行する場合は、さほど気にならないかもしれません。
ですが、極端にファイル数が多い場合や、CD

ファイル数を減らす事による読み込み時間の減少を実感できると思います。
今は役に立たなくても、いつか役に立つかもしれませんよ?
良ければ、頭の片隅にでも覚えておいて下さいな。