![]() |
アーカイブエントリがディレクトリであるかどうかは、ヘッダのメンバ関数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 |