c#实现metro文件压缩解压示例
c#实现metro文件压缩解压示例
发布时间:2016-12-28 来源:查字典编辑
摘要:在1.zip中增加一张新图片复制代码代码如下:StorageFilejpg=awaitKnownFolders.PicturesLibrar...

在1.zip中增加一张新图片

复制代码 代码如下:

StorageFile jpg = await KnownFolders.PicturesLibrary.GetFileAsync("1.jpg");

StorageFile zip = await KnownFolders.PicturesLibrary.GetFileAsync("1.zip");

//把上面这句改成如下就成了压缩文件

//StorageFile zip = await KnownFolders.PicturesLibrary.CreateFileAsync(jpg.DisplayName+".zip",CreationCollisionOption.ReplaceExisting);

using (ZipArchive archive = new ZipArchive((await zip.OpenAsync(FileAccessMode.ReadWrite)).AsStream(), ZipArchiveMode.Update))

{

ZipArchiveEntry readmeEntry = archive.CreateEntry(jpg.Name);

byte[] buffer = WindowsRuntimeBufferExtensions.ToArray(await FileIO.ReadBufferAsync(jpg));

using (var writer = readmeEntry.Open())

{

await writer.WriteAsync(buffer, 0, buffer.Length);

}

}

把1.jpg从1.zip中删除

复制代码 代码如下:

StorageFile zip = await KnownFolders.PicturesLibrary.GetFileAsync("1.zip");

using (ZipArchive archive = new ZipArchive((await zip.OpenAsync(FileAccessMode.ReadWrite)).AsStream(), ZipArchiveMode.Update))

{

//删除文件

archive.GetEntry("1.jpg").Delete();

}

导出1.jpg,newFile为要到出的文件

复制代码 代码如下:

StorageFile zip = await KnownFolders.PicturesLibrary.GetFileAsync("1.zip");

using (ZipArchive archive = new ZipArchive((await zip.OpenAsync(FileAccessMode.ReadWrite)).AsStream(), ZipArchiveMode.Update))

{

ZipArchiveEntry zipArchiveEntry = archive.GetEntry("1.jpg").

using (Stream fileData = zipArchiveEntry.Open())

{

StorageFile newFile = await KnownFolders.PicturesLibrary.CreateFileAsync(zipArchiveEntry.FullName, CreationCollisionOption.ReplaceExisting);

using (IRandomAccessStream newFileStream = await newFile.OpenAsync(FileAccessMode.ReadWrite))

{

using (Stream s = newFileStream.AsStreamForWrite())

{

await fileData.CopyToAsync(s);

await s.FlushAsync();

}

}

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类