C# 使用SharpZipLib将文件添加到ZIP,但不包含路径

C# 使用SharpZipLib将文件添加到ZIP,但不包含路径,c#,zip,sharpziplib,C#,Zip,Sharpziplib,我需要将3个文件合并成1个zip文件,并使其可供用户下载。我能够达到我的要求,除了一件事:它将文件压缩到子文件夹中 例如,我的文件的位置如下所示: C:\TTCG\WebSites\Health\ABC.CSV C:\TTCG\WebSites\Health\XYZ.CSV C:\TTCG\WebSites\Health\123.CSV 但是在zip文件中,它使用“TTCG\WebSites\Health\”作为路径来压缩文件夹中的文件。请参阅附件 我不希望文件夹位于路径中。我只想要3个没有

我需要将3个文件合并成1个zip文件,并使其可供用户下载。我能够达到我的要求,除了一件事:它将文件压缩到子文件夹中

例如,我的文件的位置如下所示:

C:\TTCG\WebSites\Health\ABC.CSV
C:\TTCG\WebSites\Health\XYZ.CSV
C:\TTCG\WebSites\Health\123.CSV
但是在zip文件中,它使用“TTCG\WebSites\Health\”作为路径来压缩文件夹中的文件。请参阅附件

我不希望文件夹位于路径中。我只想要3个没有文件夹的zip文件。我怎样才能做到这一点

生成zip文件的代码如下所示:

ZipFile z = ZipFile.Create(Server.MapPath("~" + @"\Accident.zip"));

//initialize the file so that it can accept updates
z.BeginUpdate();

//add the file to the zip file        
z.Add(Server.MapPath("~" + @"\ABC.csv"));
z.Add(Server.MapPath("~" + @"\XYZ.csv"));
z.Add(Server.MapPath("~" + @"\123.csv"));        

//commit the update once we are done
z.CommitUpdate();
//close the file
z.Close();

根据常见问题解答,您必须手动删除文件夹路径:

如何创建没有文件夹的Zip文件?

删除用于创建ZipEntry的文件名的路径部分 在将其添加到ZipOutputStream之前

ZipEntry entry=newzipentry(Path.GetFileName(fullPath))

可以找到常见问题解答


这似乎是图书馆的局限。希望这有帮助

如果文件系统信息中有文件,可以使用:
z.Add(file.FullName,Path.GetFileName(file.FullName))

z.Add(pathToFile, pathInZipFile);

这会将文件添加到zip的根目录中。

这不会编译add方法不会使用2个字符串,例如that@MatthewLock这个方法需要两个字符串,就像我这样。SharpZipLib v0.86.0.518