C# .net如何在zipfile中包含目录和文件关系
我正在使用System.IO.Compression命名空间ZipFile和ArchiveFile库。为了尽可能地提高效率,我调用了标记为zipping的顶部文件夹。CreateFromDirectory将遍历子文件夹以包含这些文件夹及其文件。但是,我有一些未标记为压缩的子文件夹。更糟糕的是,标记为不压缩的子文件夹包括标记为压缩的子文件夹。据我所知,这些跳过的文件夹不能包含在Zipfile中。这意味着我在zipfile中丢失了文件夹结构。这使得将文件恢复到原始位置变得更加困难C# .net如何在zipfile中包含目录和文件关系,c#,.net,zipfile,C#,.net,Zipfile,我正在使用System.IO.Compression命名空间ZipFile和ArchiveFile库。为了尽可能地提高效率,我调用了标记为zipping的顶部文件夹。CreateFromDirectory将遍历子文件夹以包含这些文件夹及其文件。但是,我有一些未标记为压缩的子文件夹。更糟糕的是,标记为不压缩的子文件夹包括标记为压缩的子文件夹。据我所知,这些跳过的文件夹不能包含在Zipfile中。这意味着我在zipfile中丢失了文件夹结构。这使得将文件恢复到原始位置变得更加困难 还有其他解决方法吗
还有其他解决方法吗?您可以使用ZipArchive并手动将文件添加到zip存档中。
entryName
是您所需的target\folder\filename.ext
using (var zipFileStream = new FileStream(destinationArchiveFileName, FileMode.Create))
{
using (var archive = new ZipArchive(zipFileStream, ZipArchiveMode.Create))
{
for (int i = 0; i < filesToAdd.Count; i++)
{
// filter some files before this, or ignore some files here
var fileName = filesToAdd[i];
var entryName = entryNames[i];
archive.CreateEntryFromFile(fileName, entryName, compressionLevel);
}
}
}
使用(var zipFileStream=newfilestream(destinationArchiveFileName,FileMode.Create))
{
使用(var archive=new ZipArchive(zipFileStream,ZipArchiveMode.Create))
{
for(int i=0;i
这就是
ZipFile.CreateFromDirectory在循环中内部调用的内容,您可以在此处对其进行过滤。如果不添加所需子文件夹的父文件夹结构,相信它不会起作用。即使你将一个文件夹标记为不压缩,但要求该文件夹的一个子文件夹处于压缩状态,也没有什么意义