android zip解压文件

人生初见 2013-04-24 05:07:34
解压代码如下代码如下:
public static void unZipFile(String zipPath,String unZipPath) throws ZipException,IOException
{
File dirFile = new File(unZipPath);
if(!dirFile.exists())
{
dirFile.mkdirs();
}
ZipFile zipFile = new ZipFile(zipPath);
InputStream input = null;
OutputStream output = null;
try
{
Enumeration<?> entries = zipFile.entries();
while(entries.hasMoreElements())
{
ZipEntry zipEntry = (ZipEntry)entries.nextElement();
if(zipEntry.isDirectory())
{
String nameString = zipEntry.getName();
nameString = nameString.substring(0,nameString.length()-1);
File file = new File(unZipPath);
file.mkdirs();
}
else
{
String filePath = unZipPath+File.separator+zipEntry.getName();
filePath = new String(filePath.getBytes(),"gbk");
File file = new File(filepath);
file.getParentFile().mkdirs();
file.createNewFile();
input = zipFile.getInputStream(zipEntry);
output = new FileOutputStream(file);
byte[] buffer = new byte[BUFFER_SIZE];
int realLength = 0;
while((realLength = input.read(buffer)) != -1)
{
output.write(buffer,0,realLength);
}
}
}
zipFile.close();
}
finally
{
if(input != null)
{
input.close();
}
if(output != null)
{
output.flush();
output.close();
}
}
}

需要解压的文件的路径:
String SDPATH= Environment.getExternalStorageDirectory() +"/";
String fromPath = SDPATH+"ABC/"+"abc.zip";
String toPath = SDPATH+"ABC";
unZipFile(fromPath,toPath);

上面那段解压的代码解压本地电脑上的文件时可以的,但是android上面是不可以的,不知道怎么回事?
...全文
295 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
YJun2012 2014-09-01
  • 打赏
  • 举报
回复
楼主你怎么搞的,求你勒
YJun2012 2014-09-01
  • 打赏
  • 举报
回复
楼主怎么解决的,我也遇到这个问题了,说说你怎么弄得
csdn_2013 2013-04-25
  • 打赏
  • 举报
回复
引用 13 楼 yuanzhouting 的回复:
卡在这里了,唉~~崩溃了~~~
呵呵, 最近也在搞这个东西 LZ 可以借鉴一下如下博文 http://blog.csdn.net/spjhandsomeman/article/details/8140182 希望有所帮助
人生初见 2013-04-25
  • 打赏
  • 举报
回复
卡在这里了,唉~~崩溃了~~~
wlcw16 2013-04-25
  • 打赏
  • 举报
回复
引用 11 楼 yuanzhouting 的回复:
引用 10 楼 wlcw16 的回复:引用 9 楼 yuanzhouting 的回复:我用了下你写的那个方法,然后发觉while循环没有走进去,但是也没有报错,这个是因为没找到文件么?我自己的那个方法,好像在android上面有错 也许你的压缩方法是将所有文件直接压入zip。 我这个方法是利用zipEntry进行的按文件夹进行压缩。可能跟你的压缩方式不一样。如果需要的……
那可能是因为压缩的方式不同?这方面我也不是很精通,只是会用。
人生初见 2013-04-25
  • 打赏
  • 举报
回复
引用 10 楼 wlcw16 的回复:
引用 9 楼 yuanzhouting 的回复:我用了下你写的那个方法,然后发觉while循环没有走进去,但是也没有报错,这个是因为没找到文件么?我自己的那个方法,好像在android上面有错 也许你的压缩方法是将所有文件直接压入zip。 我这个方法是利用zipEntry进行的按文件夹进行压缩。可能跟你的压缩方式不一样。如果需要的话我可以把doZip发给你。 下次回……
没有写压缩的阿,我是直接从服务器上将压缩文件下到手机上,然后再进行解压
wlcw16 2013-04-25
  • 打赏
  • 举报
回复
引用 9 楼 yuanzhouting 的回复:
我用了下你写的那个方法,然后发觉while循环没有走进去,但是也没有报错,这个是因为没找到文件么?我自己的那个方法,好像在android上面有错
也许你的压缩方法是将所有文件直接压入zip。 我这个方法是利用zipEntry进行的按文件夹进行压缩。可能跟你的压缩方式不一样。如果需要的话我可以把doZip发给你。 下次回复记得点引用。要不我这里没有提示
人生初见 2013-04-25
  • 打赏
  • 举报
回复
我用了下你写的那个方法,然后发觉while循环没有走进去,但是也没有报错,这个是因为没找到文件么?我自己的那个方法,好像在android上面有错
人生初见 2013-04-25
  • 打赏
  • 举报
回复
想问下rar文件或其他文件解压怎么弄?谢谢!
人生初见 2013-04-25
  • 打赏
  • 举报
回复
引用 14 楼 ConnectionUtils 的回复:
引用 13 楼 yuanzhouting 的回复:卡在这里了,唉~~崩溃了~~~ 呵呵, 最近也在搞这个东西 LZ 可以借鉴一下如下博文 http://blog.csdn.net/spjhandsomeman/article/details/8140182 希望有所帮助
后来发现是我下载下来存放的时候文件出了问题,然后导致解压出问题了。崩溃死我了,谢谢啦! 问题已经解决了!
wlcw16 2013-04-24
  • 打赏
  • 举报
回复
引用 7 楼 yuanzhouting 的回复:
权限有添加的,路径我弹出框看了下是mnt\sdcard\ABC\abc.zip,额。。。
嗯。这种情况可以debug一下。
人生初见 2013-04-24
  • 打赏
  • 举报
回复
权限有添加的,路径我弹出框看了下是mnt\sdcard\ABC\abc.zip,额。。。
wlcw16 2013-04-24
  • 打赏
  • 举报
回复
你的解压的文件名最前面带.么? 带.在linux系统默认是隐藏文件夹。 在file explorer中是看不到的。 在shell命令下可以用 ls -a看到。
人生初见 2013-04-24
  • 打赏
  • 举报
回复
这个解压的方法解压我本地电脑上面的文件时可以的,我就想着是不是路径的问题
李狗蛋52635 2013-04-24
  • 打赏
  • 举报
回复
引用 楼主 yuanzhouting 的回复:
解压代码如下代码如下: public static void unZipFile(String zipPath,String unZipPath) throws ZipException,IOException { File dirFile = new File(unZipPath); if(!dirFile.exists()) { ……
1.路径是不是对啊 2.权限是不是有啊 3.还不行打个断点一点一点试呗
人生初见 2013-04-24
  • 打赏
  • 举报
回复
没有抛出异常错误,但是在ABC的文件夹下看不到解压的文件
wlcw16 2013-04-24
  • 打赏
  • 举报
回复

public static boolean unZip(String zipDirectory, String storageDirectory,
            String fileName) {
        boolean result = false;
        String zipName = zipDirectory + fileName;
        String filePath = storageDirectory;
        ZipFile zipFile = null;
        BufferedInputStream bis = null;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        try {
            zipFile = new ZipFile(zipName);
            Enumeration<? extends ZipEntry> emu = zipFile.entries();
            while (emu.hasMoreElements()) {
                ZipEntry entry = (ZipEntry) emu.nextElement();
                if (entry.isDirectory()) {
                    new File(filePath + entry.getName()).mkdirs();
                    continue;
                }
                bis = new BufferedInputStream(zipFile.getInputStream(entry));
                File file = new File(filePath + entry.getName());
                File parent = file.getParentFile();
                if (parent != null && (!parent.exists())) {
                    parent.mkdirs();
                }
                fos = new FileOutputStream(file);
                bos = new BufferedOutputStream(fos, BUFFER);
                int count;
                byte data[] = new byte[BUFFER];
                while ((count = bis.read(data, 0, BUFFER)) != -1) {
                    bos.write(data, 0, count);
                }
                bos.flush();
            }
            result = true;
        }
        catch (Exception e) {
            e.printStackTrace();
            result = false;
        }
        finally {
            try {
                if (null != bos) {
                    bos.close();
                }
                if (null != bis) {
                    bis.close();
                }
                if (null != zipFile) {
                    zipFile.close();
                }
            }
            catch (IOException e) {
                e.printStackTrace();
                result = false;
            }
        }
        return result;
    }
原来写过的一个解压方法,可以正常解压。 zipDirectory 是压缩文件路径 storageDirectory 是解压文件路径 fileName 是压缩文件名(xxx.zip)
wlcw16 2013-04-24
  • 打赏
  • 举报
回复
没有抛出什么错误么?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧