我发现了一些允许在iPhone上解压缩文件的libs(LiteZip和ZipArchive).但是它们都需要输入作为文件.是否有一个库允许直接解压缩包含zip存档数据的NSData而不将其写入临时文件?
我试图采用上面提到的libs,但到目前为止没有成功.
我试过java.util.zip包,它太慢了.
然后我找到了LZMA SDK和7z jbinding,但他们也缺少一些东西.LZMA SDK没有提供一种如何使用的文档/教程,这非常令人沮丧.没有javadoc.
虽然7z jbinding不提供仅提取1个文件的简单方法,但它只提供了提取zip文件的所有内容的方法.而且,它没有提供指定放置解压缩文件的位置的方法.
请问???
有没有人有任何想法如何务实地快速检查zip文件是否已根据文件大小损坏?理想情况下,检查zip是否已损坏的最佳方法是进行CRC校验,但这可能需要很长时间,尤其是在存在大量zip文件的情况下.我很高兴能够快速执行文件大小或标题检查.
提前致谢.
如果file是a .zip和unrar文件,如果我的文件类型是,我可以解压缩文件.rar.我如何使用python 2.7完成这项工作?
我有一个文件夹,我使用共享链接(不是公共链接)和卷曲从Dropbox下载.它作为压缩文件夹下载.我需要在bash shell脚本中使用unzip解压缩此文件夹.每当文件夹解压缩时,我都会收到以下错误:
warning: stripped absolute path spec from /
mapname: conversion of failed
Run Code Online (Sandbox Code Playgroud)
为了确保卷曲不是一个奇怪的问题,我直接从Dropbox下载了文件夹并再次尝试.我得到了同样的错误.显示所有文件和子目录,并且它们的完整性似乎没有任何问题.使用GUI解压缩任一文件夹不会导致错误消息.
我运行unzip -l并注意到一个奇怪的第一个条目:
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
0 Defl:N 2 0% 01-23-14 19:38 00000000 /
Run Code Online (Sandbox Code Playgroud)
我相信这是一个导致问题的空目录.我的问题是,有没有办法忽略这个空目录或抑制错误消息(我试过-qq没有运气)?或者,有什么东西我做错了/缺少?
我已经测试了这个Mac OSX 10.9.1并且Ubuntu Linux (Version Unknown)得到了相同的结果.
编辑:我也测试了它,jar xf它工作正常,没有任何错误.跑步jar xvf表明它created: /.我仍然认为这是一个空的,未命名的目录导致问题,但我似乎无法正确使用我的语法,因此解压缩将忽略它.我只想使用jar,但我需要能够指定输出目录.
基本上我需要解压缩.zip文件,其中包含一个名为modeled的文件夹,该文件夹又包含许多excel文件.
我有幸找到已编写的代码(ZipArchive),这是为了解压缩zip文件,但我无法弄清楚为什么它在我使用它时会抛出错误信息.ZipArchive的代码和错误消息如下所示:
import java.io.{OutputStream, InputStream, File, FileOutputStream}
import java.util.zip.{ZipEntry, ZipFile}
import scala.collection.JavaConversions._
object ZipArchive {
val BUFSIZE = 4096
val buffer = new Array[Byte](BUFSIZE)
def unZip(source: String, targetFolder: String) = {
val zipFile = new ZipFile(source)
unzipAllFile(zipFile.entries.toList, getZipEntryInputStream(zipFile)_, new File(targetFolder))
}
def getZipEntryInputStream(zipFile: ZipFile)(entry: ZipEntry) = zipFile.getInputStream(entry)
def unzipAllFile(entryList: List[ZipEntry], inputGetter: (ZipEntry) => InputStream, targetFolder: File): Boolean = {
entryList match {
case entry :: entries =>
if (entry.isDirectory)
new File(targetFolder, entry.getName).mkdirs
else
saveFile(inputGetter(entry), new FileOutputStream(new File(targetFolder, entry.getName)))
unzipAllFile(entries, inputGetter, …Run Code Online (Sandbox Code Playgroud) 作为标题,我使用python zipfile模块从我的Django后端服务器(托管在Ubuntu 14.04.1 LTS上)创建zip文件:
zipfile.ZipFile(dest_path, mode='w', compression=zipfile.ZIP_DEFLATED,
allowZip64=True)
Run Code Online (Sandbox Code Playgroud)
我设法在Finder中使用我的Mac打开它,但是使用SSZipArchive库没有成功.我尝试使用最新的master分支提交,也标记了v1.0.1和v0.4.0.
使用v0.4.0,我在unzip.c的第1506行遇到错误:
if (unz64local_CheckCurrentFileCoherencyHeader(s,
&iSizeVar,
&offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
return UNZ_BADZIPFILE;
Run Code Online (Sandbox Code Playgroud)
并且它每次都使用相同的文件解压缩在同一个文件上currentFileNumber.
有没有人得到任何线索?
PS我认为SSZipArchive应该支持Zip64存档文件,因为我在他们的github repo上问了一个问题.
更新 [20160129]我对zip文件执行了zipinfo检查,并输出以下内容:
...
-rw-r--r-- 2.0 unx 1992 b- defN 26-Nov-15 14:59 <file_name>
-rw-r--r-- 2.0 unx 925 b- defN 26-Nov-15 14:59 <file_name>
-rw-r--r-- 2.0 unx 1194 b- defN 26-Nov-15 14:59 <file_name>
-rw-r--r-- 2.0 unx 72 b- defN 26-Nov-15 14:52 <file_name>
-rw-r--r-- 2.0 unx 289 b- defN 18-Jan-16 11:27 <file_name>
-rw-r--r-- 2.0 unx 1541 b- defN …Run Code Online (Sandbox Code Playgroud) 有没有办法在两个拉链中的两个文件上执行diff operetion而不提取它们?如果没有 - 任何其他解决方法来比较它们而不提取?
谢谢.
unzip ×10
zip ×3
compression ×2
python ×2
android ×1
bash ×1
codeigniter ×1
corruption ×1
curl ×1
diff ×1
excel ×1
ios ×1
iphone ×1
java ×1
linux ×1
nsdata ×1
objective-c ×1
php ×1
python-2.7 ×1
scala ×1
unrar ×1
warnings ×1
zipfile ×1