Windows将添加的文件动态存储在zip存档中
本文关键字:zip 存储 动态 添加 文件 Windows | 更新日期: 2023-09-27 18:04:06
我有一个代码从这个链接:
http://www.codeproject.com/Tips/515704/Archive-Multiple-Files-In-Zip-Extract-Zip-Archive压缩并提取zip格式的文件。
然而,在代码的压缩部分只是创建一个空的zip文件,所以我怎么能在这个zip存档程序添加文件?我已经检查了文档的ziparchieve类,它有一个方法为。net称为CreateEntryFromFile(String, String),但是这个方法不适用于。net windows商店版本。
这是我们所关心的代码:
private async void ZipClick(object sender, RoutedEventArgs e)
{
FileSavePicker picker = new FileSavePicker();
picker.FileTypeChoices.Add("Zip Files (*.zip)", new List<string> { ".zip" });
picker.SuggestedStartLocation = PickerLocationId.Desktop;
picker.SuggestedFileName = "1";
zipFile = await picker.PickSaveFileAsync();
using (var zipStream = await zipFile.OpenStreamForWriteAsync())
{
using (ZipArchive zip = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
foreach (var file in storeFile)
{
ZipArchiveEntry entry = zip.CreateEntry(file.Name);
using (Stream ZipFile = entry.Open())
{
byte[] data = await GetByteFromFile(file);
ZipFile.Write(data, 0, data.Length);
}
}
}
}
}
我误解了示例代码,它实际上可以存档您第一次传递给它的文件,但我不确定是否可以使用相同的方法来添加添加其他文件在同一zip文件中。
public async void zipit(StorageFile zipFile, StorageFile file)
{
using (var zipToOpen = await zipFile.OpenStreamForWriteAsync())
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
ZipArchiveEntry readmeEntry = archive.CreateEntry(file.Name);
using (Stream writer = readmeEntry.Open())
{
//writer.WriteLine("Information about this package.");
//writer.WriteLine("========================");
byte[] data = await GetByteFromFile(file);
writer.Write(data, 0, data.Length);
}
}
}
}
其中"zipFile"是你选择存档的文件(目的地),"file"是原始的未压缩的文件。