第一步:先从下载地址把文件下载到本地
/** * TODO 下载文件到本地 * @author nadim
* * @date add by wl
* * @param fileUrl 远程下载地址
* * @param fileLocal 本地路径
* * @throws Exception */
public boolean downloadFile(String fileUrl,String fileLocal) throws Exception {
boolean flag=false;
URL url = new URL(fileUrl);
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
//读文件流
DataInputStream in = new DataInputStream(urlCon.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(fileLocal));
byte[] buffer = new byte[2048];
int count = 0;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
try {
if(out!=null) {
out.close();
}
if(in!=null) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
flag=true;
return flag;
}
第二步:创建一个工具类
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
/**
* 封装了XML转换成object,object转换成XML的代码
*
* @author Steven
*
*/
public class ZipUtils {
/**
* @param sourcefiles 源文件(服务器上的zip包存放地址)
* @param decompreDirectory 解压缩后文件存放的目录
* @throws IOException IO异常
*/
@SuppressWarnings("unchecked")
public static void unzip(String sourcefiles, String decompreDirectory) throws IOException {
ZipFile readfile = null;
try {
readfile =new ZipFile(sourcefiles);
Enumeration takeentrie = readfile.getEntries();
ZipEntry zipEntry = null;
File credirectory = new File(decompreDirectory);
credirectory.mkdirs();
while (takeentrie.hasMoreElements()) {
zipEntry = (ZipEntry) takeentrie.nextElement();
String entryName = zipEntry.getName();
InputStream in = null;
FileOutputStream out = null;
try {
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File createDirectory = new File(decompreDirectory+ File.separator + name);
createDirectory.mkdirs();
} else {
int index = entryName.lastIndexOf("\\");
if (index != -1) {
File createDirectory = new File(decompreDirectory+ File.separator+ entryName.substring(0, index));
createDirectory.mkdirs();
}
index = entryName.lastIndexOf("/");
if (index != -1) {
File createDirectory = new File(decompreDirectory + File.separator + entryName.substring(0, index));
createDirectory.mkdirs();
}
File unpackfile = new File(decompreDirectory + File.separator + zipEntry.getName());
in = readfile.getInputStream(zipEntry);
out = new FileOutputStream(unpackfile);
int c;
byte[] by = new byte[1024];
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.flush();
}
} catch (IOException ex) {
ex.printStackTrace();
throw new IOException("解压失败:" + ex.toString());
} finally {
if (in != null) {
try {
in.close();
} catch (IOException ex) {
}
}
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
in=null;
out=null;
}
}
} catch (IOException ex) {
ex.printStackTrace();
throw new IOException("解压失败:" + ex.toString());
} finally {
if (readfile != null) {
try {
readfile.close();
} catch (IOException ex) {
ex.printStackTrace();
throw new IOException("解压失败:" + ex.toString());
}
}
}
}
}
调用ZipUtils工具类中的unzip方法即可解压zip文件