hamigaki.png

前のページ 上に戻る ホーム 次のページ

高度なトピック

ディレクトリ

ディレクトリ

アーカイブエントリがディレクトリであるかどうかは、ヘッダのメンバ関数is_directory()で調べることができる。

#include <hamigaki/archivers/tar_file.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/iostreams/copy.hpp>

namespace ar = hamigaki::archivers;
namespace fs = boost::filesystem;
namespace io = boost::iostreams;

void extract_entry(ar::tar_file_source& tar)
{
    const ar::tar::header& head = tar.header();

    if (head.is_directory())
        fs::create_directory(head.path);
    else
    {
        fs::ofstream file(head.path, std::ios_base::binary);
        io::copy(tar, file);
    }
}

一方、アーカイブにディレクトリのエントリを作成するには、メンバ関数type()でファイル種別をhamigaki::filesystem::directory_fileに設定したヘッダを使用する。

#include <hamigaki/archivers/tar_file.hpp>

namespace ar = hamigaki::archivers;
namespace fs = boost::filesystem;

void append_directory(ar::tar_file_sink& tar, const fs::path& ph)
{
    ar::tar::header head;
    head.path = ph;
    head.type(hamigaki::filesystem::directory_file);
    tar.create_entry(head);
}
製作著作 © 2006-2008 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ