示例#1
0
文件: test.cpp 项目: punkkeks/ClanLib
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));
	}
}
示例#2
0
	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));
	}