チュートリアルを書き始めました
ArchiverとExtractorのコンセプトをまとめて、チュートリアルを書き始めました。
http://hamigaki.sourceforge.jp/doc/html/Archiver.html
http://hamigaki.sourceforge.jp/doc/html/Extractor.html
最初の例として圧縮がないため単純なtarを選びました。
#include <hamigaki/archivers/tar_file.hpp> #include <boost/filesystem/fstream.hpp> #include <boost/filesystem/operations.hpp> #include <boost/iostreams/copy.hpp> namespace ar = hamigaki::archivers; namespace fs = boost::filesystem; namespace io = boost::iostreams; void append_file(ar::tar_file_sink& tar, const fs::path& ph) { ar::tar_file_sink::header_type head; head.path = ph; head.file_size = fs::file_size(ph); tar.create_entry(head); fs::ifstream file(ph, std::ios_base::binary); io::copy(file, tar); } int main() { ar::tar_file_sink tar("test.tar"); append_file(tar, "foo.txt"); append_file(tar, "bar.txt"); tar.close_archive(); }
単純とは言えませんが、これぐらいのサイズなら許容範囲内でしょう。
この例ではタイムスタンプやパーミッションが保存されないので注意。