我尝试创建一个定期下载ZIP存档(GTFS Feed)的小程序,提取文件并将数据加载到数据库中。这些文件应存储在独立存储中。
但是,我找不到提取ZIP存档的方法。有multiple built-in classes处理解压缩,但它们要么将目录/文件名作为参数,要么不能处理多个文件/目录。
我错过了什么?我们如何将隔离存储中的ZIP文件提取到那里的目录中(不使用第三方库)?
答案 0 :(得分:2)
打开zip存档并枚举所有条目。打开为您提供流的每个条目,然后将该条目的内容复制到隔离的存储流:
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
using (Stream zipStream = entry.Open())
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(entry.Name, FileMode.CreateNew, isoStore))
{
// copy from zipStream to isoStream
}
}
}