gpt4 book ai didi

c# - 将目录添加到现有的 .zip 文件

转载 作者:太空狗 更新时间:2023-10-29 22:57:28 26 4
gpt4 key购买 nike

首先,我想说的是,我已经尝试寻找解决此问题的方法,但我还没有找到不需要解压缩、添加文件夹然后再次压缩的方法。我没有使用任何第三方库。如果可能的话,我想使用 system.io.compression 来做到这一点……如果不行,我会使用 dotnetzip 作为最后的手段。

长话短说;博士。我希望能够将其中包含文件的目录添加到已创建的 zip 文件中。使用 System.Io.Compression 库是否可行?

编辑:

using (FileStream zipToOpen = new FileStream(zipfile, FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
ZipArchiveEntry readmeEntry = archive.CreateEntry("testFolder/");
}
}

因此,使用此代码我可以在其中创建一个文件夹,但其中没有任何文件。我现在的问题是,我是否必须再次运行此代码才能将源文件夹中的每个文件都放到 zip 内的此文件夹中,还是有更好的方法?

最佳答案

感谢@stuartd,我设法找到了一种方法来做到这一点。他向我指出了这个答案https://stackoverflow.com/a/22339337/3182972我找到了一种将其实现到我的代码中的方法,该代码从所述目录的源位置创建目录,其中包含文件。

代码如下:

   using (FileStream zipToOpen = new FileStream("c:\MyDestination\test.zip", FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
ZipArchiveEntry readmeEntry;
DirectoryInfo d = new DirectoryInfo(c:\MySourceFolder);
FileInfo[] Files = d.GetFiles("*");
foreach (FileInfo file in Files)
{
readmeEntry = archive.CreateEntryFromFile("c:\MySourceFolder"+ "\\" + file.Name, "MySourceFolder" + "/" + file.Name);
}
}
}

所以我所做的是转到我的源目录并遍历那里的所有文件,并使用 foreach 循环将它们添加到 zip 文件中的目标文件夹。

您还可以使用此代码获取源目录名称:

string sourcepath = "C:\MySourceFolder";
int ind = sourcepath.LastIndexOf("\\") + 1;
string folderName = sourcepath.Substring(ind, folder.Length - ind);

关于c# - 将目录添加到现有的 .zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com