我正在尝试使用以下代码将文件添加到现有存档.运行时不会显示任何错误或异常,但也不会将任何文件添加到存档中.有什么想法吗?
using (FileStream fileStream = File.Open(archivePath, FileMode.Open, FileAccess.ReadWrite))
using (ZipOutputStream zipToWrite = new ZipOutputStream(fileStream))
{
zipToWrite.SetLevel(9);
using (FileStream newFileStream = File.OpenRead(sourceFiles[0]))
{
byte[] byteBuffer = new byte[newFileStream.Length - 1];
newFileStream.Read(byteBuffer, 0, byteBuffer.Length);
ZipEntry entry = new ZipEntry(sourceFiles[0]);
zipToWrite.PutNextEntry(entry);
zipToWrite.Write(byteBuffer, 0, byteBuffer.Length);
zipToWrite.CloseEntry();
zipToWrite.Close();
zipToWrite.Finish();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用CSharpZipLib库自动压缩一些文件.问题是生成的zip文件不适用于Winzip(版本8.1)或XP的压缩文件夹.它适用于7zip.
Winzip给出一个错误,该文件不是标准的Zip 2.0格式.
是否有一个我可以更改的参数可以使库以Winzip/XP兼容格式进行压缩?
对C#使用ICSharpCode.SharpZipLib,我如何验证传递的文件实际上是一个有效的zip文件(不是右键单击并重命名为.zip的东西)?
[HttpPost]
public ActionResult Upload(HttpPostedFileBase fileData)
{
if (fileData != null && fileData.ContentLength > 0)
{
if (Path.GetExtension(fileData.FileName) == ".zip")
{
var zipFile = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
fileData.SaveAs(zipFile);
FileStream fs = System.IO.File.OpenRead(zipFile);
ZipFile zf = new ZipFile(fs);
foreach (ZipEntry zipEntry in zf)
{
if (zipEntry.Name.EndsWith(".htm") || zipEntry.Name.EndsWith(".html"))
{
return Json(new { success = true });
}
}
fs.Close();
fs.Dispose();
System.IO.File.Delete(zipFile);
}
else
{
var fileName = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
fileData.SaveAs(fileName);
return Json(new { success = true });
}
}
return …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中集成它.
请帮忙.
我使用SharpZipLib压缩文件,用户收到此错误:
1不是受支持的代码页
我在这里发现问题出在区域设置中,解决方案就在
"替换从Thread的OEMCodePage获取代码页的代码行,而不是硬编码合适的值."
但我没有找到任何代码示例来解决这个问题.
我是C#程序员.
现在,我正在使用ICSharpCode.SharpZipLib.dll在我当前的项目中创建一个zip文件.但是我发现当我在SECOND TIME点击按钮执行一个函数来创建一个zip文件时,应用程序会抛出异常,友好并且认真地告诉我"大小为零,但我预计46086".
我很困惑,我想知道为什么?当我第一次点击按钮时,我可以成功完成,没有任何错误.
我的相关代码如下:
internal void ThreadProc()
{
try
{
ZipHelper.CreateZip(backupZipFile, Constants.HomeConstant, true);
// do other things
}
}
Run Code Online (Sandbox Code Playgroud)
CreateZip()函数的实现如下:
public static void CreateZip(string zipFileName, string sourceDirectory, bool recurse)
{
FastZip zip = new FastZip();
if (File.Exists(zipFileName))
{
File.Delete(zipFileName);
}
zip.CreateZip(zipFileName, sourceDirectory, true, "");
}
Run Code Online (Sandbox Code Playgroud)
现在,我将向您展示递归调用过程:
Run Code Online (Sandbox Code Playgroud)public void UpdateAppAsync(string masterConfig) { this.masterConf = masterConfig; Thread actualThread = new Thread(new ThreadStart(UpdateApp)); actualThread.IsBackground = true; actualThread.CurrentCulture = Thread.CurrentThread.CurrentCulture; actualThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture; actualThread.Start(); }
Run Code Online (Sandbox Code Playgroud)private void …
我目前正在使用.NET 2.0下的SharpZipLib,因此我需要将单个文件压缩为单个压缩存档.为了做到这一点,我目前正在使用以下内容:
string tempFilePath = @"C:\Users\Username\AppData\Local\Temp\tmp9AE0.tmp.xml";
string archiveFilePath = @"C:\Archive\Archive_[UTC TIMESTAMP].zip";
FileInfo inFileInfo = new FileInfo(tempFilePath);
ICSharpCode.SharpZipLib.Zip.FastZip fZip = new ICSharpCode.SharpZipLib.Zip.FastZip();
fZip.CreateZip(archiveFilePath, inFileInfo.Directory.FullName, false, inFileInfo.Name);
Run Code Online (Sandbox Code Playgroud)
这应该是正确的(ish),但是在测试时我遇到了一个小问题.可以说我的临时目录(即包含未压缩输入文件的目录)包含以下文件:
tmp9AE0.tmp.xml //The input file I want to compress
xxx_tmp9AE0.tmp.xml // Some other file
yyy_tmp9AE0.tmp.xml // Some other file
wibble.dat // Some other file
Run Code Online (Sandbox Code Playgroud)
当我运行压缩时,所有.xml文件都包含在压缩归档中.这是因为fileFilter传递给CreateZip方法的最终参数.在引擎盖下,SharpZipLib正在执行模式匹配,这也会获取前缀为xxx_和的文件yyy_.我认为它也可以拾取任何后缀.
所以问题是,如何使用SharpZipLib压缩单个文件?然后,问题可能是我如何格式化,fileFilter以便匹配只能拿起我想要压缩的文件,而不是其他任何东西.
顺便说System.IO.Compression一句,有没有理由为什么不包括一个ZipStream班级?(它只支持GZipStream)
编辑:解决方案(源自Hans Passant的接受答案)
这是我实现的压缩方法:
private static void CompressFile(string inputPath, string outputPath)
{
FileInfo …Run Code Online (Sandbox Code Playgroud) 我在项目中使用SharpZipLib,我想知道是否可以使用它来查看zip文件,如果其中一个文件中有一个数据在我正在搜索的范围内修改,那么选择该文件并复制它到一个新目录?有人知道这有可能吗?
我使用DotNetZip创建一个带有内存字符串的zip存档,并使用以下代码将其下载为附件.
byte[] formXml = UTF8Encoding.Default.GetBytes("<form><pkg>Test1</pkg></form>");
byte[] formHtml = UTF8Encoding.Default.GetBytes("<html><body>Test2</body></html>");
ZipFile zipFile = new ZipFile();
zipFile.AddEntry("Form.xml", formXml);
zipFile.AddEntry("Form.html", formHtml);
Response.ClearContent();
Response.ClearHeaders();
Response.AppendHeader("content-disposition", "attachment; filename=FormsPackage.zip");
zipFile.Save(Response.OutputStream);
zipFile.Dispose();
Run Code Online (Sandbox Code Playgroud)
现在我需要对SharpZipLib做同样的事情.我该怎么做 ?SharpZipLib是否支持将文件添加为字节数组?
我正在尝试.tar.gz使用SharpZipLib从文件夹中找到文件列表.问题是无论如何传递文件路径 - 结果总是包含文件路径 - 而不仅仅是文件自身.我在这里失踪了什么?
string filesFolder = "c:\\testfolder\\test\\";
List<string> filesToZip = new List<string>() { filesFolder +"test1", filesFolder +"test2"};
using (FileStream fs = new FileStream(filesFolder +"myGz.tar.gz" , FileMode.Create, FileAccess.Write, FileShare.None))
using (Stream gzipStream = new GZipOutputStream(fs))
using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream))
{
foreach (string filename in filesToZip )
{
{
TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
tarArchive.WriteEntry(tarEntry, false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的是一个"myGz.tar.gz"文件.当我尝试用7.zip打开它时 - 我在存档中获得完整的文件夹结构--c:\ testfolder\test \,并在其中 - "test1","test".
如何删除文件路径?
谢谢
sharpziplib ×10
c# ×9
.net ×2
asp.net ×2
icsharpcode ×2
add ×1
append ×1
archive ×1
asp.net-mvc ×1
compression ×1
dotnetzip ×1
xamarin ×1
zip ×1
zipfile ×1