在我的应用程序中,我需要Zip和解压缩一些文件.为此,我使用了DotNet Zip Library(Ionic.Zip.dll-- DotNet Zip Lib)
一切正常但是当我拿出我的文件的EXE并尝试从不同的文件夹运行它时,它无法运行.我必须将Ionic.Zip.dll保存在我的应用程序所在的文件夹中.有什么出路吗?我只想要一个没有附加任何字符串的EXE文件....或者除了DotNet Zip Lib之外还有其他任何选项.
我一直在搜索示例,但似乎找不到涉及提取某个文件夹的DotNetZip场景.我正在尝试从.zip文件中提取一个名为"CSS"的文件夹,它是.zip文件中的顶级文件夹.这是我到目前为止的代码:
using (ZipFile zip1 = ZipFile.Read(savedFileName))
{
var selection = from e in zip1.Entries
where System.IO.Path.GetFileName(e.FileName).StartsWith("CSS/")
select e;
foreach (var e in selection)
e.Extract(_contentFolder);
}
Run Code Online (Sandbox Code Playgroud)
当前的选择什么都没有,我可以使用一些帮助重写它,以便它提取css文件夹及其所有子目录和文件.
我无法想象这很难做到,但我无法让它发挥作用.我有一个文件类,只存储我想要压缩的文件的位置,目录和名称.我正在压缩的文件存在于磁盘上,因此FileLocation是完整路径.ZipFileDirectory在磁盘上不存在.如果我的文件列表中有两个项目,
{ FileLocation = "path/file1.doc", ZipFileDirectory = @"\", FileName = "CustomName1.doc" },
{ FileLocation = "path/file2.doc", ZipFileDirectory = @"\NewDirectory", FileName = "CustomName2.doc" }
Run Code Online (Sandbox Code Playgroud)
我希望在根目录中看到MyCustomName1.doc,以及包含MyCustomName2.doc的名为NewDirectory的文件夹,但是发生的情况是它们都使用以下代码在根目录中结束:
using (var zip = new Ionic.Zip.ZipFile())
{
foreach (var file in files)
{
zip.AddFile(file.FileLocation, file.ZipFileDirectory).FileName = file.FileName;
}
zip.Save(HttpContext.Current.Response.OutputStream);
}
Run Code Online (Sandbox Code Playgroud)
如果我用这个:
zip.AddFiles(files.Select(o => o.FileLocation), false, "NewDirectory");
Run Code Online (Sandbox Code Playgroud)
然后它创建新目录并按预期将所有文件放入其中,但随后我无法使用此方法使用自定义命名,并且它还引入了第一种方法可以完美处理的更复杂的问题.
有没有办法让第一种方法(AddFile())按预期工作?
我可以成功地将zip文件夹中的文件解压缩到一个文件夹中,但我不太确定如何获取这些文件并将它们添加到现有的zip文件中.我将它们提取到桌面上名为"mod"的目录中,然后我需要将它们添加到另一个zip文件中.救命?这是我的提取代码 -
ZipFile zip = ZipFile.Read(myZip);
zip.ExtractAll(outputDirectory,ExtractExistingFileAction.OverwriteSilently);
Run Code Online (Sandbox Code Playgroud)
感谢帮助,谢谢.
我正在使用DotNetZip.当我归档通常具有英文名称的文件时.但是当我在结果档案中存档带有俄文名称的文件时,文件名称不正确.有人说字符串
ZipConstants.DefaultCodePage = 866;
Run Code Online (Sandbox Code Playgroud)
但它没有编译.我还使用zip.UseUnicodeAsNecessary属性,并将我的文件名转换为utf8和utf7.
如何删除.zip中的目录及其中的所有文件(最好使用DotNetZip)?
现在我正在浏览zip中的所有文件,但它不起作用:
foreach (ZipEntry e in zip)
{
//If the file is in the directory I want to delete
if(e.FileName.Substring(0, 9) == "FolderName/")
{
zip.RemoveEntry(e.FileName);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法,如果没有,我将如何使这项工作?
我有一个使用Ionic zip压缩的zip文件.在解压缩之前,我需要验证可用的磁盘空间.但是如何在手前找到未压缩的尺寸?zip文件中是否有任何标题信息(通过离子)以便我可以阅读它?
我遇到了麻烦,我得到了这个代码:
DirectoryInfo di = new DirectoryInfo(dir);
FileInfo[] rgFiles = di.GetFiles();
DirectoryInfo[] d = di.GetDirectories();
if(rgFiles != null && d != null) {
foreach (FileInfo fi in rgFiles)
{
foreach (DirectoryInfo dii in d)
{
using (ZipFile zip = ZipFile.Read(locateZipFile()))
{
zip.AddFile(fi.FullName, "");
zip.AddDirectory(dii.FullName,dii.Name);
toolStripStatusLabel1.Text = "Inserting " + fi.Name;
toolStripStatusLabel1.Text = "Inserting " + dii.Name + " and all of it's contents";
MessageBox.Show("Inserted the file " + fi.Name);
MessageBox.Show("Inserted the folder " + dii.Name + " and all contents in …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个将流式传输给用户的DotNetZip zip文件.在zip文件中,我插入了两个内存流.但由于某种原因,当我打开zip文件时,它是空的.我查看了文档,发现几乎没有任何帮助.我的代码:
public async Task<FileResult> DownloadFile(string fileName){
//Create image memory stream
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("~/Images/" + fileName));
MemoryStream msImage = new MemoryStream();
image.Save(msImage, image.RawFormat);
//Create Word document using DocX
MemoryStream msDoc = new MemoryStream();
DocX doc = DocX.Create(msDoc);
Paragraph p1 = doc.InsertParagraph();
p1.AppendLine("Text information...");
Paragraph p2 = doc.InsertParagraph();
p2.AppendLine("DISCLAIMER: ...");
doc.SaveAs(msDoc);
//Create Zip File and stream it to the user
MemoryStream msZip = new MemoryStream();
ZipFile zip = new ZipFile();
msImage.Seek(0, SeekOrigin.Begin);
msDoc.Seek(0, SeekOrigin.Begin);
ZipEntry imageEntry = zip.AddEntry("MyImageName.jpg", msImage);
ZipEntry …Run Code Online (Sandbox Code Playgroud) dotnetzip ×10
c# ×9
.net ×1
asp.net ×1
asp.net-mvc ×1
compression ×1
dependencies ×1
linq ×1
overwrite ×1
size ×1