我正在尝试做的是使用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
zip.AddDirectory(k);
zip.Save("t.zip");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望我的拉链看起来像这样.
但它看起来像这样.
任何帮助将不胜感激,谢谢.
我有一个数据库,我们使用以下代码存储使用DynaZip Max Secure压缩的pdf文件:
MemoryStream msIN = new System.IO.MemoryStream(); //Input MemoryStream
MemoryStream msZip = new System.IO.MemoryStream(); //Compressed MemoryStream
BinaryReader objBinaryReader;
BinaryWriter objBinaryWriter;
public MemoryStream CompressStream(byte[] vbuf)
{
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(msIN);
bw.Write(vbuf);
CDZipSNET dz1 = new CDZipSNET();
dz1.ZipMemToMemCallback += new CDZipSNET.OnZipMemToMemCallback(this.ZipMemToMemCallback_event);
dz1.ActionDZ = CDZipSNET.DZACTION.ZIP_MEMTOMEM;
return msZip;
}
Run Code Online (Sandbox Code Playgroud)
这是ZipMemToMemCallback_event代码:
public void ZipMemToMemCallback_event(CDZipSNET.MEMTOMEMACTION lAction,ref byte[] lpMemBuf,ref uint pdwSize,uint dwTotalReadL,uint dwTotalReadH,uint dwTotalWrittenL,uint dwTotalWrittenH,ref CDZipSNET.MEMTOMEMRESPONSE plRet)
{
int bytesToRead;
switch(lAction)
{
case CDZipSNET.MEMTOMEMACTION.MEM_READ_DATA:
if((dwTotalReadL == 0) && (dwTotalReadH == 0))
{
msIN.Seek(0, System.IO.SeekOrigin.Begin);
objBinaryReader …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用DotNetZip.
using (var zip = new ZipFile())
{
zip.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(866);
zip.AddFile(filename, "directory\\in\\archive");
zip.Save("archive.zip");
}
Run Code Online (Sandbox Code Playgroud)
一切都好,但是当我使用方法AddDirectoryByName我有一个错误的目录名称.
我将尝试使用带有106个图像(675MB)的DotNetZip-Libary创建一个zip文件,其代码如下:
Public Function GetZip() As Byte()
Dim zip As New Ionic.Zip.ZipFile(String.Format("{0}.zip", Me.GallerySystemName))
AddHandler zip.SaveProgress, AddressOf SaveProgress
For Each img In Me.Images
zip.AddFile(img.OriginalFile.FullName, "")
Next
Dim bytZip As Byte()
Using ms As New MemoryStream
zip.Save(ms)
bytZip = ms.ToArray
End Using
Return bytZip
End Function
Run Code Online (Sandbox Code Playgroud)
当我运行这段代码时,执行会停止在图像40(有时更早)没有任何执行.什么都没发生.我试图将zip直接保存到文件中.有用.
有任何想法吗?
一月
美好的一天
我有一个应用程序,我用它来存档使用DotNetZip库的文件夹.我注意到,当它进入实际的"压缩"过程时,它占用了100%的CPU.这个应用程序将与另一个(一个TCP聊天应用程序)一起使用,所以我真的需要这个使用尽可能少的CPU.
有什么办法可以安全地限制cpu吗?我试过降低优先级,但没有什么区别.我现在唯一能做的就是将亲和力设置为1核心,使其使用50%.但当然这只适用于多核计算机.
在C#中,我使用的是DotNetZip 我有一个名为"innerZip.zip"的zip包含一些数据,另一个名为"outerZip.zip"的zip包含innerZip.为什么我这样做?好吧,在设置密码时,密码实际上适用于添加到存档而不是整个存档的各个条目,通过使用这个内部/外部组合,我可以设置传递到整个内部zip,因为它是一个条目外面的.
问题是,代码说得比普通词更好:
ZipFile outerZip = ZipFile.Read("outerZip.zip");
outerZip.Password = "VeXe";
Stream innerStream = outerZip["innerZip.zip"].OpenReader();
ZipFile innerZip = ZipFile.Read(innerStream); // I'm getting the exception here.
innerZip["Songs\\IronMaiden"].Extract(tempLocation);
Run Code Online (Sandbox Code Playgroud)
为什么我得到那个例外?内部文件是一个zip文件,所以我不应该得到那个例外吗?有没有办法绕过这个或者我只需要从外部提取内部,然后访问它?
Thanx提前..
我正在使用dotnetzip库创建zip.
但我不知道如何检查zip中是否存在文件.如果该文件存在,那么我将使用路径更新该文件.
public void makezip(string flname)
{
string fln =flname;
string curFile = @"d:\crs.zip";
if (File.Exists(curFile))
{
ZipFile zipfl = ZipFile.Read(@"D:\crs.zip");
var result = zipfl.Any(entry => entry.FileName.EndsWith(@fln));
if (result == true) {
zipfl.UpdateFile(@fln);
}else{
zipfl.AddFile(@fln);
}
zipfl.Save(@"d:\crs.zip");
}
else
{
try
{
ZipFile zipfl = new ZipFile();
var result = zipfl.Any(entry => entry.FileName.EndsWith(@fln));
if (result == true)
{
zipfl.AddFile(@fln);
}
zipfl.Save(@"d:\crs.zip");
}catch {
MessageBox.Show("Invalid Zip File");
}}}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用DotNetZip组件在MVC方法中创建一个zipfile.
这是我的代码:
public FileResult DownloadImagefilesAsZip()
{
using (var memoryStream = new MemoryStream())
{
using (var zip = new ZipFile())
{
zip.AddDirectory(Server.MapPath("/Images/"));
zip.Save(memoryStream);
return File(memoryStream, "gzip", "images.zip");
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到一个"无法访问关闭的流"错误,我不知道为什么.
由于我是Visual Studio的新手,这个问题可能听起来有点愚蠢:我如何安装DotNetZip库?我正在使用Visual Studio Express 2012 for Windows Desktop.
大多数情况下,这段代码都可以工作,但是,大约有 1/3 的时间,它通过了大约 80% 的时间并失败了。解压缩 x 射线图像文件时解压缩失败。(它们是没有文件扩展名的编号文件。)它似乎在大部分时间都能处理它们,但是,每隔一段时间就会有一个无法解压缩的 X 射线。当它在文件上失败时,它会给它一个带有随机扩展名的随机文件名。它似乎在解压缩时遇到了它不理解的字符组合。
它特别发生在 aes 加密的 zip 文件中。如果他们发送没有 aes 加密压缩的相同文件,那么程序会很好地解压缩它们。
当我使用 7zip 应用程序手动解压缩同一个 zip 文件时,我输入了相同的密码并且它工作得很好。
前任。文件应该是:00043 ==> 解压失败产生:1hzcqoee.nss
尚未计算最终散列。
在 Ionic.Zip.WinZipAesCipherStream.get_FinalAuthentication() 在 Ionic.Zip.ZipEntry.VerifyCrcAfterExtract(Int32calculatedCrc32, EncryptionAlgorithm encryptionAlgorithm, Int32 expectedCrc32, Stream archiveStream, Int64 uncompressedSize) at Ionic.Zip. encryptionAlgorithm, Int32 expectedCrc32) at Ionic.Zip.ZipEntry.InternalExtractToBaseDir(String baseDir, String password, ZipContainer zipContainer, ZipEntrySource zipEntrySource, String fileName) at Ionic.Zip.ZipFile._InternalExtractAll(String path, Boolean overrideExtractExistingNewPropertySystemsZip4) at Ionic.Zip.ZipEntry.InternalExtractToBaseDir(String baseDir, String password, ZipContainer zipContainer, ZipEntrySource zipEntrySource, String fileName) (字符串 zipToUnpack,字符串 unpackDirectory)
using Ionic.Zip;
public bool ExtractZip(string …Run Code Online (Sandbox Code Playgroud) dotnetzip ×10
c# ×7
zip ×3
.net ×1
asp.net-mvc ×1
compression ×1
cpu-usage ×1
dll ×1
gzip ×1
hashcode ×1
installation ×1
memorystream ×1
vb.net ×1
zipfile ×1
zlib ×1