package com.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.ProgressDialog; import android.content.Context; public class DownloadManager { public static File getFileFromServer(String path, ProgressDialog pd,Context context) throws Exception { // 如果相等的话表示当前的sdcard挂载在手机上并且是可用的 // if (Environment.getExternalStorageState().equals( // Environment.MEDIA_MOUNTED)) { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); // 获取到文件的大小 pd.setMax(conn.getContentLength()/1000); InputStream is = conn.getInputStream(); // File file = new File(Environment.getExternalStorageDirectory(), // "updata.apk");//得到sd卡的目录 File file = new File(context.getCacheDir().getParentFile(), "updata.apk"); //放到当前应用程序所在的目录下 FileOutputStream fos = new FileOutputStream(file); BufferedInputStream bis = new BufferedInputStream(is); byte[] buffer = new byte[1024]; int len; int total = 0; while ((len = bis.read(buffer)) != -1) { fos.write(buffer, 0, len); total += len; // 获取当前下载量 pd.setProgress(total/1000); } fos.close(); bis.close(); is.close(); return file; // } else { // return null; // } } }