我正在使用来自here的libzip android端口。我可以在我的档案中添加一个名为zip_add(_zip, filePath, zip_source_callback)
的新文件。它会创建一个空文件。如何将数据写入此空文件?
我知道我必须在我的zip_source_callback
方法中处理它,但我不知道究竟是什么以及如何。
任何帮助将不胜感激。
我的zip_source_callback现在看起来像这样:
ssize_t _source_callback(void *state, void *data, size_t len, enum zip_source_cmd cmd)
{
ssize_t r = 0;
switch ( cmd )
{
case ZIP_SOURCE_OPEN:
{
LOGD("ZIP_SOURCE_OPEN");
break;
}
case ZIP_SOURCE_CLOSE:
{
LOGD("ZIP_SOURCE_CLOSE");
break;
}
case ZIP_SOURCE_STAT:
{
LOGD("ZIP_SOURCE_STAT");
break;
}
case ZIP_SOURCE_ERROR:
default:
{
LOGD("ZIP_SOURCE_ERROR");
break;
}
case ZIP_SOURCE_READ:
{
LOGD("ZIP_SOURCE_READ");
break;
}
case ZIP_SOURCE_FREE:
{
LOGD("ZIP_SOURCE_FREE");
return 0;
}
}
return r;
}
答案 0 :(得分:0)
如果要添加的数据是连续的内存块,则无需使用zip_source_callback
。您可以使用zip_source_buffer
创建所需的zip_source_t
,这更简单。在https://libzip.org/documentation/zip_file_add.html
zip_source_buffer
的示例
在这里,我修改了他们的示例,以在名为std::vector
的{{1}}中添加内存。该代码将放置在打开和关闭zip存档的代码之间。
dataVector