void TestApp::run_test() { File file("ZipWriter.zip", File::create_always, File::access_write); ZipWriter zip_writer(file); zip_writer.begin_file("file1.txt", true); zip_writer.write_file_data("12345678\r\n", 10); zip_writer.write_file_data("12345678\r\n", 10); zip_writer.write_file_data("12345678\r\n", 10); zip_writer.write_file_data("12345678\r\n", 10); zip_writer.write_file_data("12345678\r\n", 10); zip_writer.end_file(); std::string s = "file2"; s.append(1, 0xc6); // silly danish char zip_writer.begin_file(s, false); zip_writer.write_file_data("ClanLib Zipping!", 16); zip_writer.end_file(); zip_writer.write_toc(); Console::write_line("Second filename: %1", s); file.close(); Console::write_line(""); file = File("ZipWriter.zip", File::open_existing, File::access_read); ZipReader zip_reader(file); while (zip_reader.read_local_file_header()) { Console::write_line("File: %1", zip_reader.get_filename()); DataBuffer buffer(zip_reader.get_uncompressed_size()); zip_reader.read_file_data(buffer.get_data(), buffer.get_size()); std::string str8(buffer.get_data(), buffer.get_size(), false); Console::write_line("Contents: %1", StringHelp::utf8_to_text(str8)); } }
ReaderSharedPtr ZipFile::get_file(const String &file_name) const { ZipFileEntries::const_iterator found; ReaderSharedPtr reader; found = m_files.find(file_name); if (found != m_files.end()) { ZipFileReader zip_reader(m_file, found->second.get_position()); reader = boost::make_shared<Reader>( zip_reader.get_buffer(), file_name); return reader; } EL_THROW_EXCEPTION(FileNotFoundException() << boost::errinfo_file_name(file_name)); }