您的位置:首页 > 编程语言 > Java开发

Java解压zip文件

2010-04-13 11:43 381 查看
package com.sunz.fileUpload;

import java.io.*;

import java.util.*;

import java.util.zip.*;

import sun.io.*;

public class Linzip {

public static String make8859toGB(String str) {

try {

String str8859 = new String(str.getBytes("8859_1"), "GB2312");

return str8859;

} catch (UnsupportedEncodingException ioe) {

return str;

}

}

public static native int MessageBox(int hWnd, String lpText, String lpCaption, int uType);

public String unZip(String filePath){

String shpPath = "";

File infile = new File(filePath);

try {

// 检查是否是ZIP文件

ZipFile zip = new ZipFile(infile);

zip.close();

// 建立与目标文件的输入连接

ZipInputStream in = new ZipInputStream(new FileInputStream(infile));

ZipEntry file = in.getNextEntry();

int i = infile.getAbsolutePath().lastIndexOf('.');

String dirname = new String();

if (i != -1){

dirname = infile.getAbsolutePath().substring(0, i);

System.out.println("dirname:"+dirname);

}

else{

dirname = infile.getAbsolutePath();

System.out.println("dirname:"+dirname);

}

File newdir = new File(dirname);

newdir.mkdir();

byte[] c = new byte[1024];

int slen;

while (file != null) {

i = make8859toGB(file.getName()).replace('/', '//')

.lastIndexOf('//');

if (i != -1) {

File dirs = new File(dirname

+ File.separator

+ make8859toGB(file.getName()).replace('/', '//')

.substring(0, i));

dirs.mkdirs();

dirs = null;

}

System.out.print("Extract "

+ make8859toGB(file.getName()).replace('/', '//')

+ " ........ ");

if (file.isDirectory()) {

File dirs = new File(make8859toGB(file.getName()).replace(

'/', '//'));

dirs.mkdir();

dirs = null;

} else {

String theFilePath = dirname

+ File.separator

+ make8859toGB(file.getName()).replace('/', '//');

if(theFilePath.substring(theFilePath.lastIndexOf("."), theFilePath.length()).equals(".shp")){

shpPath = theFilePath;

System.out.println(theFilePath);

}

FileOutputStream out = new FileOutputStream(theFilePath);

while ((slen = in.read(c, 0, c.length)) != -1)

out.write(c, 0, slen);

out.close();

}

System.out.print("O.K./n");

file = in.getNextEntry();

}

in.close();

} catch (ZipException zipe) {

MessageBox(0, infile.getName() + "不是一个ZIP文件!", "文件格式错误", 16);

} catch (IOException ioe) {

MessageBox(0, "读取" + filePath + "时错误!", "文件读取错误", 16);

} catch (Exception i) {

System.out.println("over"+i.getMessage());

}

return shpPath;

}

public static void main(String[] args) {

Linzip linzip = new Linzip();

String path = linzip.unZip("d:/ssss.zip");

System.out.println("here:"+path);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: