2010年02月05日

合体っ!

最近は、4月並みの暖かさ晴れになったり、いきなり冷え込んだり雪と不安定な気候が続いていますね。
こんな時こそ体調を崩しやすいものです。ちなみに、私はちゃんと風邪を引きましたふらふら
早く治さないと駄目ですね・・・・
こんにちは、ハラです。

今回は、何回かぶりにRubyについて書いてみたいと思います。
以前、色々な種類のテキストデータを読み込み、バイナリデータとして出力する方法を書いてみました。
続きとして、その出力したバイナリデータを合体exclamation×2して、1つのファイルにしてみたいと思います。

サンプルとして、「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個読み込む方が多く時間がかかりますたらーっ(汗)

提出作品をハードディスクから実行する場合は、さほど気にならないかもしれません。
ですが、極端にファイル数が多い場合や、CDCDから実行した場合などは、
ファイル数を減らす事による読み込み時間の減少を実感できると思います。

今は役に立たなくても、いつか役に立つかもしれませんよ?
良ければ、頭の片隅にでも覚えておいて下さいな。

posted by 管理人 at 10:39 | Comment(0) | プログラミング
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。