空、舞う。

悠々自適に空を舞え。個人的なことぺちゃくちゃしゃべるブログです。あくまで個人の感想です。

アーカイバを作ってみる

アーカイバを作りたいと思い立って実際に作ってみました。言語はC++です。

圧縮とかは全然ですが、とりあえず、それらしいものはできました。
悩んだのはクラスをどうするのかですね。

class Data
{
    char name[256];
    size_t size;
};

・・・本当にこれでいいのか!?
コンストラクターとそれぞれのメンバへのゲッターを作成して、わかりやすいようにそれぞれの変数を表示できるメンバ関数作って終わり。f:id:tombeecreator:20170303120124p:plain
こんな感じのアルゴリズムで作りました。

目的としては

  • 各ファイルを取り出せれば良い
  • 可逆
  • ファイルの圧縮とかは考えない
  • フォルダを指定したら、フォルダごとまとめられる

ファイルそのものをまとめたらいいので、テキストファイルかどうかも気にしなくてよかったかな。
読み込むときは、バイナリ読み込みでファイルの内容を移すだけ。

フォルダ内のファイルの全探索はboostライブラリを使わせていただきました。boostライブラリが非常に強力。本当に、こういうライブラリ作れるとか天才!

偉大なるboostライブラリをいますぐ入手だ!→

ターミネータが画像ファイルとかでも「0x1A」とは限らない気がしたから、とりあえずファイルの容量を記録して、読み込み時に随時デクリメント。それが0になったら読み込み終了。

こうするとそれなりになんとかなったかな。

とりあえず1段階目終了。