C# 使用Ionic Zip库将文件夹添加到Zip的根目录
我试图做的是使用Ionic Zip库(c#)将文件夹和文件的列表全部添加到我的Zip文件的根目录中 这是我到目前为止所拥有的C# 使用Ionic Zip库将文件夹添加到Zip的根目录,c#,zip,dotnetzip,C#,Zip,Dotnetzip,我试图做的是使用Ionic Zip库(c#)将文件夹和文件的列表全部添加到我的Zip文件的根目录中 这是我到目前为止所拥有的 string k = "B:/My Documents/Workspace"; private void button1_Click(object sender, EventArgs e) { using (ZipFile zip = new ZipFile()) { //add directory, give it a name
string k = "B:/My Documents/Workspace";
private void button1_Click(object sender, EventArgs e)
{
using (ZipFile zip = new ZipFile())
{
//add directory, give it a name
zip.AddDirectory(k);
zip.Save("t.zip");
}
}
现在,我希望我的拉链看起来像这样
- t、 拉链
- 随机文件和文件夹
- t、 拉链
- t(文件夹)
- 随机文件和文件夹
- t(文件夹)
任何帮助都将不胜感激,谢谢。AddDirectory的默认行为应该将目录的内容添加到zipfile的根路径,而不创建子目录 AddDirectory还有第二个重载,它添加了一个参数来指定zipfile中添加的文件的路径。但是,由于您希望文件进入根目录,这将只是一个空字符串
zip.AddDirectory(k, "");
有关更多信息,请参阅
这些都不能解释子文件夹的来源。我怀疑问题来自代码中的其他内容。在debug中运行此命令,并在调用AddDirectory时查看“k”等于什么,或者打印zip.entries集合中的所有“条目”,这可能会很有用。为什么不尝试类似的操作:
foreach (var file in System.IO.Directory.GetFiles(k))
{
zip.AddFile(file);
}
要获得无限深度的目录和文件,请将其与基于System.IO.Directory.GetDirectories(“path”)的递归方法相结合。
我认为应该非常简单。试试这个
using (ZipFile zip = new ZipFile())
{
zip.AddFiles(sourcefiles, ""); //For saving things at root of your zip
foreach (DirectoryInfo objFile in objDir.GetDirectories())
{
zip.AddDirectory(objFile.FullName, objFile.Name); ///For saving subdirectories within zip
}
zip.Save(pathzipfile + ".zip");
}
谢谢,我要试一下好的,我试过了,它仍然创建了子文件夹,还有其他想法吗?在我的测试中,AddDirectory没有创建子文件夹——即使我没有传递空字符串,它也不会创建子文件夹。你的代码中还有其他可能创建该文件夹的东西吗?据我所知,这是我仅有的代码,逐字逐句的lol,我尝试了所有不同类型的数据。我可以发誓,虽然在某一点上,它的工作是预期的,只是最近才开始这样做。让我检查一下我的库和我正在使用的Ionic版本是的,我刚刚测试过:
var-imagePath=basePath+“Content\\Images\\”;AddDirectory(imagePath)代码>-它将“我的图像”文件夹中的文件和文件夹递归地直接添加到根目录,就像您希望自己的文件夹那样。这太棒了!谢谢你,伙计。您使用这行代码zip.AddFiles(sourcefiles,“”)做了一件很棒的工作//从根本上保存东西