我正在尝试使用 Azure 数据工厂 v2 解压缩 zip 文件(内部有多个文件)。该 zip 文件位于 Azure 文件存储中。ADF 复制任务仅复制原始 zip 文件而不解压缩它。关于如何进行这项工作有什么建议吗?
这是当前的配置:
我注意到与使用WinZip等本机工具相比,Java中的解压缩工具非常慢.
是否有可用于Java的第三方库更高效?开源是首选.
编辑
这是使用Java内置解决方案vs 7zip的速度比较.我在原始解决方案中添加了缓冲输入/输出流(感谢Jim,这确实产生了很大的不同).
Zip文件大小:800K Java解决方案:2.7秒7Zip解决方案:204毫秒
以下是使用内置Java解压缩的修改代码:
/** Unpacks the give zip file using the built in Java facilities for unzip. */
@SuppressWarnings("unchecked")
public final static void unpack(File zipFile, File rootDir) throws IOException
{
ZipFile zip = new ZipFile(zipFile);
Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zip.entries();
while(entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
java.io.File f = new java.io.File(rootDir, entry.getName());
if (entry.isDirectory()) { // if its a directory, create it
continue;
}
if (!f.exists()) {
f.getParentFile().mkdirs();
f.createNewFile();
}
BufferedInputStream bis = new BufferedInputStream(zip.getInputStream(entry)); …Run Code Online (Sandbox Code Playgroud) 我想解压导演.
这意味着我有一个压缩的目录名xxx.zip.在手册册我对上压缩目录中点击并做解压的文件夹,然后我买了名的解压缩dirtectory xxx并在此目录中有一个相同的目录xxx.在子文件夹将包含的文件.
这意味着,xxx-> xxx->文件这是解压缩文件夹的heirarchi.
因此,在我的网站中,我想使用PHP代码解压缩目录.
我怎样才能做到这一点?我只需要xxx->files不是xxx->xxx->files结构.
我怎样才能做到这一点?
我有zip文件在zip文件的文件夹里面,请建议我如何使用zip输入流阅读它.
例如:
abc.zip
|
documents/bcd.zip
Run Code Online (Sandbox Code Playgroud)
如何在zip文件中读取zip文件?
我正在尝试从nseindia.com下载文件并在内存中解压缩.我正在使用nodejs webkit和adm-zip.我在控制台上收到错误:
未捕获的无效或不支持的zip格式.找不到END标头
代码:
var http = require('http'),
fs = require('fs'),
request = require('request'),
AdmZip = require('adm-zip'),
out = fs.createWriteStream('data/nseeqbhav.zip'); // For saving NSE Equity bhavcopy
// Downloading NSE Bhavcopy
request(
{ method: 'GET',
uri: 'http://www.nseindia.com/content/historical/EQUITIES/2012/DEC/cm19DEC2012bhav.csv.zip',
headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11",
"Referer": "http://www.nseindia.com/products/content/all_daily_reports.htm",
"Accept-Encoding": "gzip,deflate,sdch",
"encoding": "null",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Cookie": "cookie"
}
}
).pipe(out);
var zip = new AdmZip("data/nseeqbhav.zip"),
zipEntries = zip.getEntries();
zip.extractAllTo(/*target path*/"data/unzip/", /*overwrite*/true);
Run Code Online (Sandbox Code Playgroud)
我试着跟随结束流但没有成功.
out.end();
out.destroy();
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在尝试提取没有PARENT目录的从属zip文件,在使用Gradle提取时排除某些文件.
这是我得到的,这有效,但感觉不对,我希望有更好的方法来做到这一点
我提取的Zip文件
jar tf parent-folder-name.zip
parent-folder-name/bin/something.sh
parent-folder-name/bin/something.bat
parent-folder-name/lib/somelib.jar
Run Code Online (Sandbox Code Playgroud)
选项1
task explodeToDist1(type: Copy) {
from zipTree(configurations.extractDist.singleFile)
exclude "**/lib/**"
eachFile {
def newPath = it.relativePath.segments[1..-1].join("/")
it.relativePath = RelativePath.parse(true, newPath)
}
into 'build/dist'
doLast {
def path = buildDir.getPath() + "/dist/parent-folder-name"
def dirToDelete = new File(path)
dirToDelete.deleteOnExit()
}
}
Run Code Online (Sandbox Code Playgroud)
选项2
task explodeToDist2 << {
def unzipDir = new File('build/unzipTmp')
copy {
from zipTree(configurations.extractDist.singleFile)
into unzipDir
}
def rootZipDir = unzipDir.listFiles()[0]
fileTree(rootZipDir){
exclude "**/lib/**"
}.copy {
into 'src/dist'
}
unzipDir.deleteDir()
}
Run Code Online (Sandbox Code Playgroud)
对我来说选项2 …
在我的ios应用程序中,我需要将放在/ var/mobile/Library/Preferences/xxx中的存档解压缩到例如/ var/mobile/Library/Preferences/tmp中.
我的问题是,当我启动它时:
unzip /var/mobile/Library/Preferences/xxx/archive.zip -d /var/mobile/Library/Preferences/tmp/
Run Code Online (Sandbox Code Playgroud)
在tmp文件夹中,有所有归档路径:/ var/mobile/Library/Preferences/tmp/var/mobile/Library/Preferences/xxx/archive/...
我怎么能只为/ var/mobile/Library/Preferences/tmp/archive/...而不是所有存档路径进入目标目录?
提前致谢
在我的网页中,用户应该上传压缩文件.在压缩文件中有2个文件:另一个zip文件和一个txt文件.在我的服务器上,收到zip后,我想解压缩zip文件以解压zip&txt文件,然后将这2个文件移动到预定义的文件夹中.我有一段代码提取zip文件,但数据似乎不正确.首先,当只有1个txt文件时,它解压缩了一个zip和2个txt文件.它创建了一个额外的"未定义"txt文件.此外,在我的txt文件中,它替换为原始数据,而是替换为以下文本:'[undefined] [undefined]'.
谁可以帮我这个事?以下是我的代码:
var JSZip = require('JSZip');
fs.readFile( filePath, function(err, data){
if (!err){
var zip = new JSZip();
JSZip.loadAsync(data).then(function(zip){
object.keys(zip.files).forEach(function(filename){
var content = zip.files[filename];
var dest = path + filename;
fs.writeFileSync(dest, content);
});
});
}
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取 Autodesk Revit 文件中的一些数据,该文件只是皮肤下的 ZIP。我可以使用 7zip 进行解压,但我希望能够使用所有本机 PS 或 Windows 实现自动化操作。在将 RVT 文件重命名为 ZIP 后,我尝试了 Expand-Archive,但 Expand-Archive 有一个奇怪的错误。代码是
Expand-Archive -path:'C:\RevitVersionTest\22-PLUMB-CLR-RECTANGULAR.zip' -destinationPath:'C:\Revit Fam'
Run Code Online (Sandbox Code Playgroud)
错误是
新对象:使用“3”个参数调用“.ctor”时出现异常:“无法找到中央目录记录末尾。”
我正在使用下面的代码下载一些 zip 存档:
$client = new-object System.Net.WebClient
$client.DownloadFile("https://chromedriver.storage.googleapis.com/$LatestChromeRelease/chromedriver_win32.zip","D:\MyFolder.zip")
Run Code Online (Sandbox Code Playgroud)
结果我得到了包含所需文件的 ZIP 存档“MyFolder.zip”(让我们想象一下“test.txt”)。
如何将这个特定文件从 ZIP 存档提取到给定文件夹中?