java/android从网络下载zip资源
来源:互联网 发布:go web编程 pdf 完整版 编辑:程序博客网 时间:2024/05/21 21:46
package com.lapel.activity.html;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnCancelListener;import android.os.AsyncTask;import android.util.Log;/** * * 从网络下载zip * */public class DownLoaderZipFromNet extends AsyncTask<Void, Integer, Long> {private final String TAG = "DownLoaderTask";private URL mUrl;private File mFile;//private ProgressDialog mDialog;private int mProgress = 0;private ProgressReportingOutputStream mOutputStream;private Context mContext;String assetName;String path;/** * * @param url下载文件的url * @param out * 本地保存路径 * @param assetName * 下载的文件名称+后缀 * @param context */public DownLoaderZipFromNet(String url, String out, String assetName, Context context) {super();this.assetName = assetName;this.path = out;if (context != null) {//mDialog = new ProgressDialog(context);mContext = context;} else {//mDialog = null;}try {mUrl = new URL(url);String fileName = new File(mUrl.getFile()).getName();mFile = new File(out, fileName);Log.d(TAG, "out=" + out + ", name=" + fileName + ",mUrl.getFile()=" + mUrl.getFile());} catch (MalformedURLException e) {e.printStackTrace();}}//@Override//protected void onPreExecute() {//if (mDialog != null) {//mDialog.setTitle("Downloading...");//mDialog.setMessage(mFile.getName());//mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//mDialog.setOnCancelListener(new OnCancelListener() {////@Override//public void onCancel(DialogInterface dialog) {//cancel(true);//}//});//mDialog.show();//}//}@Overrideprotected Long doInBackground(Void... params) {return download();}////@Override//protected void onProgressUpdate(Integer... values) {//if (mDialog == null)//return;//if (values.length > 1) {//int contentLength = values[1];//if (contentLength == -1) {//mDialog.setIndeterminate(true);//} else {//mDialog.setMax(contentLength);//}//} else {//mDialog.setProgress(values[0].intValue());//}//}@Overrideprotected void onPostExecute(Long result) {try {UnZipLocal.unzip(path + File.separator + assetName, path);// 从本地sd解压到本地System.out.println("下载后 解压文件");} catch (IOException e) {e.printStackTrace();}// if (mDialog != null && mDialog.isShowing()) {// mDialog.dismiss();// }// if (isCancelled())// return;}private long download() {URLConnection connection = null;int bytesCopied = 0;try {connection = mUrl.openConnection();int length = connection.getContentLength();if (mFile.exists() && length == mFile.length()) {Log.d(TAG, "file " + mFile.getName() + " already exits!!");return 0l;}mOutputStream = new ProgressReportingOutputStream(mFile);publishProgress(0, length);bytesCopied = copy(connection.getInputStream(), mOutputStream);if (bytesCopied != length && length != -1) {Log.e(TAG, "Download incomplete bytesCopied=" + bytesCopied + ", length" + length);}mOutputStream.close();} catch (IOException e) {e.printStackTrace();}return bytesCopied;}private int copy(InputStream input, OutputStream output) {byte[] buffer = new byte[1024 * 8];BufferedInputStream in = new BufferedInputStream(input, 1024 * 8);BufferedOutputStream out = new BufferedOutputStream(output, 1024 * 8);int count = 0, n = 0;try {while ((n = in.read(buffer, 0, 1024 * 8)) != -1) {out.write(buffer, 0, n);count += n;}out.flush();} catch (IOException e) {e.printStackTrace();} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}try {in.close();} catch (IOException e) {e.printStackTrace();}}return count;}private final class ProgressReportingOutputStream extends FileOutputStream {public ProgressReportingOutputStream(File file) throws FileNotFoundException {super(file);}@Overridepublic void write(byte[] buffer, int byteOffset, int byteCount) throws IOException {super.write(buffer, byteOffset, byteCount);mProgress += byteCount;publishProgress(mProgress);}}}
1 0
- java/android从网络下载zip资源
- android-从网络下载资源到本地
- Android下载网络图片资源
- URL和URLConnection从网络下载资源
- 根据url从网络上下载资源
- android 从网络下载文件
- 如何从 JAR 和 zip 档案文件中提取 Java 资源
- 从JAR和zip档案文件中提取Java 资源
- 如何从 JAR 和 zip 档案文件中提取 Java 资源
- 如何从 JAR 和 zip 档案文件中提取 Java 资源
- 如何从 JAR 和 zip 档案文件中提取 Java 资源
- Java从网络下载图片
- java从网络下载图片
- Duilib从Zip加载资源
- java指定若干个网络图片,打包为zip下载
- Android——实现网络下载资源
- cocos2d-x 读取android手机sd卡中的资源(android http下载zip资源、解压)
- 从网络下载音频资源的简便代码
- Tomcat 系统架构与设计模式
- iOS学习爬坑记录13:查看内存使用情况的obj-c和Swift代码
- Bridge模式——对象结构型模式
- TCP 的那些事儿
- Storm的一些通用的Topology的模式
- java/android从网络下载zip资源
- ubuntu --tar指令详解(转载)
- 算法移植类加密芯片说明
- maven 之莫名其妙的问题
- Java web----Service事务SrcCode
- php的file_get_contents无法https协议下获取json的问题
- 【POJ 2728】Desert King
- Java字节流和字符流的区别
- POI设置颜色