android压缩工具 mac,Android解压缩在Mac上压缩的文件
我有一个应用程序,它下载一个zip并解压缩我SDCard上的文件.
一切正常,但是当我的同事在他的Mac(狮子)上创建zip文件时,我的所有文件都有
大小:-1
CRC:-1
compressedsize:-1
我无法将文件写入我的SD卡.两个拉链具有完全相同的内容,唯一的区别在于它们最初压缩的位置.这是我解压缩文件的代码:
public class UnzipTask extends AsyncTask {
private static final String TAG = UnzipTask.class.getSimpleName();
private String mDestLocation;
private ZipListener mListener;
private Context mCtx;
private int mCallbackId;
public UnzipTask(Context context, ZipListener listener, File dir)
{
mCtx = context;
mListener = listener;
mDestLocation = dir.getAbsolutePath() + "/";
}
public void setId(int id)
{
mCallbackId = id;
}
@Override
protected Void doInBackground(String... arg0) {
try {
String file = arg0[0];
InputStream is = mCtx.getAssets().open(file);
unzipFile(is);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Private function that ensures a directory exist
* @param dir
*/
private void _dirChecker(String dir) {
File f = new File(mDestLocation + dir);
if (!f.isDirectory()) {
f.mkdirs();
}
}
private void unzipFile(InputStream input) throws Exception {
ZipInputStream zin = new ZipInputStream(input);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
Log.v(TAG, "Unzipping " + ze.getName());
if(mListener != null)
{
mListener.onUnzipped(mCallbackId, ze.getName(), ze.g etSize(), ze.getCrc(), ze.getCompressedSize());
}
if (ze.isDirectory()) {
_dirChecker(ze.getName());
} else if (ze.getCompressedSize() > 0 && ze.getSize() > 0 && ze.getCrc() != 0.0) {
// If size=-1 -> writing to disk fails
String fileOutput = mDestLocation + ze.getName();
FileOutputStream fout = new FileOutputStream(fileOutput);
int read = 0;
byte[] buffer = new byte[(int) ze.getSize()];
while ((read = zin.read(buffer)) >= 0) {
fout.write(buffer, 0, read);
}
zin.closeEntry();
fout.close();
} else {
Log.v(TAG, "Skipping entry" + ze.getName());
}
}
}
zin.close();
}
}
几个笔记
1)我可以在Windows 7上解压缩这两个文件
2)我的同事可以在他的Mac上解压缩这两个文件
3)唯一的问题是,在Android上我无法解压缩MAC创建的zip文件…
题:
有谁知道为什么在Mac上压缩的zip文件有这些无效的大小?我的解压缩过程(在Android上)是否遗漏了一些代码?
如果你愿意,你可以在这里下载拉链,以及一个非常小的apk来显示输出:
编辑:更新链接
解决方法:
该问题与版本有关.让我从我的Mac(10.8)的一些输出开始:
~ $zipinfo -m test_mac.zip
Archive: test_mac.zip 1694 bytes 8 files
drwxr-xr-x 2.1 unx 0 bx 0% stor 10-Aug-12 01:11 test_win/
-rwxr-xr-x 2.1 unx 46 bX 20% defN 10-Aug-12 01:11 test_win/index.html
drwxrwxr-x 2.1 unx 0 bx 0% stor 10-Aug-12 01:12 __MACOSX/
drwxrwxr-x 2.1 unx 0 bx 0% stor 10-Aug-12 01:12 __MACOSX/test_win/
-rw-r--r-- 2.1 unx 211 bX 37% defN 10-Aug-12 01:11 __MACOSX/test_win/._index.html
-rwxr-xr-x 2.1 unx 9 bX-21% defN 10-Aug-12 01:10 test_win/version.txt
-rw-r--r-- 2.1 unx 211 bX 37% defN 10-Aug-12 01:10 __MACOSX/test_win/._version.txt
-rw-r--r-- 2.1 unx 211 bX 37% defN 10-Aug-12 01:11 __MACOSX/._test_win
8 files, 688 bytes uncompressed, 450 bytes compressed: 34.6%
~ $zipinfo -m test_win.zip
Archive: test_win.zip 1678 bytes 8 files
drwx--- 3.1 fat 0 bx 0% stor 10-Aug-12 09:11 test_win/
-rw-a-- 3.1 fat 46 bx 20% defN 10-Aug-12 09:11 test_win/index.html
-rw-a-- 3.1 fat 9 bx-21% defN 10-Aug-12 09:10 test_win/version.txt
drwx--- 3.1 fat 0 bx 0% stor 10-Aug-12 09:12 __MACOSX/
-rw-a-- 3.1 fat 211 bx 37% defN 10-Aug-12 09:11 __MACOSX/._test_win
drwx--- 3.1 fat 0 bx 0% stor 10-Aug-12 09:12 __MACOSX/test_win/
-rw-a-- 3.1 fat 211 bx 37% defN 10-Aug-12 09:11 __MACOSX/test_win/._index.html
-rw-a-- 3.1 fat 211 bx 37% defN 10-Aug-12 09:10 __MACOSX/test_win/._version.txt
8 files, 688 bytes uncompressed, 450 bytes compressed: 34.6%
看看第二个字段(mac文件中的2.1和win文件中的3.1).这是压缩文件的ZIP存档格式版本. java.util.zip实现仅支持版本2.50及更高版本的ZIP文件格式(请参阅此StackOverflow).
Mac的Compress …菜单选项使用低于Java实现支持的版本(2.1仍然在10.8中使用).
告诉你的同事使用命令行工具(例如zip -r myfile.zip directory_to_compress /),你应该得到Android应用程序可以膨胀的输出.
标签:android,macos,zipfile,windows-7,osx-lion
来源: https://codeday.me/bug/20190901/1786627.html
android压缩工具 mac,Android解压缩在Mac上压缩的文件相关推荐
- android+4.2+mtp+在此设备上不支持+文件类型,Nexus 4无法通过MTP显示文件
我试图将一个简单的XML文件简单地写入SD卡,但我注意到Nexus 4确实写入了该文件,但是使用Windows 7不能通过MTP协议查看该文件. 码: public void onCreate(Bun ...
- mac 下如何使用lrzsz 上传下载文件
2019独角兽企业重金招聘Python工程师标准>>> 习惯直接上菜 可以直接看原文出处 first things first: lrzsz 不如scp 好用!!!but 小文件很方 ...
- 服务器学习之mac终端与远程服务器上传下载文件到本地
Demo: 下载文件夹 scp -r root@110.255.255.52:/root/htmltitle (远程目录) 『空格』/Users/xxx/Desktop (本地目录) 下载文件 scp ...
- Ubuntu上压缩PDF文件的方法
使用latex等生成pdf格式的文件时,若其中包含过多的高清图片,会导致PDF文件过大,不便于传输和存储.特别是论文投稿时候会对pdf大小有一定要求,这里介绍几种在linux平台下压缩PDF文件的工具 ...
- mac android屏幕演示,如何在Mac上录制Android设备的屏幕 | MOS86
记录和捕获Android设备的屏幕比以前更容易.您现在可以使用多种工具来帮助您记录设备从使用ADB记录您的屏幕到使用AirDroid无线捕获屏幕截图,没有任何工具完成工作.其中一个很棒的实用程序是An ...
- mac 完全卸载android,关于macos:如何在Mac上完全卸载Android Studio?
我最近在我的MacBook Pro上下载了Android Studio,每次打开它我都会搞砸它.它给了我插件错误和其他几个错误.我需要从我的Mac上完全卸载它.我试图从我的Mac上删除它,然后像第一次 ...
- mac android sdk manager速度慢,android - SDK Manager无法在Mac上打开 - 堆栈内存溢出
当我尝试打开sdkmanager时,它在终端上说 inconsistent location '/Users/username/Library/Android/sdk/build-tools/28.0 ...
- 在Mac上使用android studio调试android手机
一.环境准备 1.安卓手机:Android版本为9 2.MacBook Pro 3.安卓数据线 二.adb介绍 1.adb概念 adb:全称是Android Debug Bridge,意思是Andro ...
- mac android 真机调试
1.已经安装好Androidstudio或者eclipse 2.下载配置好Android Sdk等 3.将android手机通过USB数据线连接Mac,打开终端输入system_profiler SP ...
最新文章
- 思科交换机Debug调试命令
- 模板方法(设计一个稳定的父类框架,框架中的有一些步骤是可变的,将可变的步骤子类中来实现)
- esxi所连交换机划vlan导致vm不能通讯
- 配置FTP服务-要点总结
- Codeforces Round #408 (Div. 2)
- sap idoc生成文件传到别的服务器,IDOC 实例详解
- 字符串之String类
- Libra 新编程语言 :Move 所有权模型灵感竟是来自它……
- 怎样增加phpmyadmin导入文件上限
- php 警告和错误屏蔽
- win8.1 64位安装oracle10g客户端心得
- 区块链开发(一)搭建基于以太坊的私有链环境
- webservice 完整视频教程
- matlab 三阶段dea模型,三阶段DEA模型SFA二阶段剔除过程
- 【笔试面试】75道逻辑推理题及答案
- 金属酞菁催化剂可促进氧还原反应
- 其实,我几乎很少看书!
- SpringBoot项目H5界面手机拍照调用腾讯云OCR卡证识别接口完整例子
- 用python画一个糖葫芦
- 【经验分享】20武汉理工计算机考研