我想验证像 Zip 这样的多部分压缩文件,因为当压缩文件缺少任何部分时,它会引发错误,但我想在提取之前验证它,不同的软件会创建不同的命名结构。
我还提到了一个与DotNetZip相关的问题。
下面的截图来自 7z 软件。
第二个屏幕截图来自 C# 的 DotNetZip。
还有一件事是我还想测试它是否也已损坏或不像 7z 软件。请参阅下面的屏幕截图了解我的要求。
请帮我解决这些问题。
在ExtractProgressEventArgs.EntriesTotal和ExtractProgressEventArgs.EntriesExtracted始终为零.这是一个已知的错误?请参阅下面的代码:
public static void UnZip(string zipFile, string destination)
{
using(ZipFile zip = ZipFile.Read(zipFile))
{
zip.ExtractProgress += new EventHandler<ExtractProgressEventArgs>(zip_ExtractProgress);
foreach (ZipEntry entry in zip)
{
entry.Extract(destination, ExtractExistingFileAction.OverwriteSilently);
}
Console.WriteLine("DONE");
}
}
static void zip_ExtractProgress(object sender, ExtractProgressEventArgs e)
{
if(e.EventType == ZipProgressEventType.Extracting_AfterExtractEntry)
Console.WriteLine(String.Format("{0} : {1} / {2} = {3}%", e.CurrentEntry.FileName, e.EntriesTotal, e.EntriesExtracted, ((double)e.EntriesTotal / (double)e.EntriesExtracted) * 100.00));
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我在My API调用期间收到包含4个pdf文档的ZIP文件.我正在使用以下代码保存ZIP文件.
var rootFolder = FileSystem.Current.LocalStorage;
var file = await rootFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
using (var fileHandler = await file.OpenAsync(FileAccess.ReadAndWrite))
{
await fileHandler.WriteAsync(document, 0, document.Length);
}
Run Code Online (Sandbox Code Playgroud)
保存文档后,
我如何解压缩并单独将pdf文档保存到手机内存中.任何人都可以指示我解决这个问题.我找到了SharpZipLib和Iconic zip库来解压缩代码; 但是如果在文档中找到了dot net实现,则不知道如何在Xamarin Forms中集成它.
请帮忙.
我知道用 ionic.zip 压缩文件,如下所示:
using (var zip = new ZipFile())
{
zip.Encryption = EncryptionAlgorithm.WinZipAes256;
zip.Password = "123";
zip.AddDirectory("/path/");
zip.SaveProgress += Zip_ProgressBar;
zip.Save("/path/");
}
Run Code Online (Sandbox Code Playgroud)
但这段代码允许人们查看加密的文件和文件夹名称。如何防止存档(加密)文件和文件夹名称出现?
我目前正在使用Ionic zip librar y.我很好奇是否比这更快?
只要它具有更快的压缩算法,我就不在乎它使用什么.
我正在使用最新版本的DotNetZip,我有一个包含5个XML的zip文件.
我想打开zip,读取XML文件并使用XML的值设置String.
我怎样才能做到这一点?
码:
//thats my old way of doing it.But I needed the path, now I want to read from the memory
string xfile = System.IO.File.ReadAllText(strNewFilePath, System.Text.Encoding.Default);
using (ZipFile zip = ZipFile.Read(this.uplZip.PostedFile.InputStream))
{
foreach (ZipEntry theEntry in zip)
{
//What should I use here, Extract ?
}
}
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) 我在C#中创建了一个程序,它处理了大约30个压缩文件夹,总共有35000个文件.我的目的是读取每个文件以处理其信息.截至目前,我的代码提取所有文件夹,然后读取文件.这个过程的问题是它需要大约15-20分钟,这是很多.
我使用以下代码来提取文件:
void ExtractFile(string zipfile, string path)
{
ZipFile zip = ZipFile.Read(zipfile);
zip.ExtractAll(path);
}
Run Code Online (Sandbox Code Playgroud)
提取部分是花费最多时间处理的部分.我需要减少这个时间.有没有办法我可以读取压缩文件夹中的文件内容而不提取它们?或者,如果有人知道任何其他方式可以帮助我减少此代码的时间?
提前致谢
我正在使用DotNetZip创建一个受密码保护的zip文件.当我尝试提取文件时,我遇到了"未指定的错误".这是为什么?
using (var zipFile = new ZipFile())
{
zipFile.Encryption = EncryptionAlgorithm.WinZipAes256;
zipFile.Password = "pangolin";
foreach(var file in someFileCollection)
{
zipFile.AddEntry(file.Name, file.Stream);
}
zipFile.Save(aPathOnDisk);
}
Run Code Online (Sandbox Code Playgroud) dotnetzip ×10
c# ×8
zip ×4
.net ×3
7zip ×1
compression ×1
encryption ×1
extract ×1
gzip ×1
ionic-zip ×1
sharpziplib ×1
xamarin ×1
xml ×1
zipfile ×1
zlib ×1