将std :: ofstream设置为zip归档文件

时间:2016-05-18 16:51:51

标签: c++ stringstream ofstream ziparchive

我想直接将一些文件写入zip存档文件(而不是首先在某个文件夹上创建它们并将它们复制到第二阶段的存档中)。 因此,我想知道是否可以选择将ofstream设置为直接指向存档内的文件。

例如,假设我在/ tmp中有一个名为data.zip的存档,并且在其中有一个文件data1.log

我可以这样做:

std::ofstream ostr("/tmp/data.zip/data1.log", std::ios::binary);

并开始使用'<<<<<<&#运营商?

感谢,

1 个答案:

答案 0 :(得分:0)

  我可以这样做:

std::ofstream ostr("/tmp/data.zip/data1.log", std::ios::binary);
     

并使用'<<'开始推送数据运营商?

不,那是不可能的。
另请注意,std::ostream& operator<<(std::ostream&,const T&)运算符明确保留用于文本格式输出,而不是写入二进制数据。

要实现这一目标,您需要std::streambuf实现,它将传入的字符数据包装到(最终?)压缩并添加到存档中的文件中。

C ++标准库没有关于如何与二进制.zip文件进行神奇交互的概念。

还有什么意思“开始推送数据”.zip存档还包含有关特定压缩文件名及其相对路径的信息。

您如何与std::ofstream界面交互以指定实际添加哪个文件的数据?

您应该研究LZMA/7zip库的c ++包装器,它允许您控制将文件添加到存档。