【android开发】下载文件工具类
FileUtils.java 主要用来操作SD卡上的文件夹和文件
package com.utils;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import android.os.Environment;public class FileUtils {private String SDPATH;public String getSDPATH() {return SDPATH;}public FileUtils() {SDPATH = Environment.getExternalStorageDirectory() + "/";}/** * 在SD卡上建文件 * @param fileName * @return * @throws IOException */public File createSDFile (String fileName) throws IOException {File file = new File(SDPATH+fileName);if (file.exists()) {file.createNewFile();}return file;}/** * 在SD卡上建目 * @param dirName * @return */public File createSDDir(String dirName) {File dir = new File(SDPATH+dirName);if (!dir.isDirectory()) {dir.mkdir();}return dir;}/** * 判SD卡上的文件是否存在 * @param fileName * @return */public boolean isFileExist(String fileName) {File file = new File(SDPATH+fileName);return file.exists();}/** * 将文件下载到SD卡上 * @param path * @param fileName * @param input * @return */public File writer2SDFromIinput(String path, String fileName,InputStream input) {File file = null;OutputStream output = null;try {// 创建目录 dir.mkdir(); createSDDir(path);file = createSDFile(path+fileName);output = new FileOutputStream(file);byte buffer[] = new byte[4 * 1024];while ((input.read(buffer)) != -1) {output.write(buffer);}output.flush();} catch (Exception e) {e.printStackTrace();} finally {try {output.close();} catch (Exception e) {e.printStackTrace();}}return file;}}
?httpDownload.java 下载文件
package com.utils;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;public class HttpDownloader {private URL url = null;/** * 下载文件 * @param urlStr url * @return */public String download(String urlStr) {StringBuffer sb = new StringBuffer();String line = null;BufferedReader buffer = null;try {url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));while ((line = buffer.readLine()) != null) {sb.append(line);}} catch (Exception e) {e.printStackTrace();} finally {try {buffer.close();} catch (Exception e) {e.printStackTrace();}}return sb.toString();}/** * * @param urlStr * @param path SD哪个目录上 * @param fileName 要存放的文件名 * @return */public int downFile(String urlStr,String path,String fileName) {InputStream in = null;FileUtils fu = new FileUtils(); if (fu.isFileExist(path+fileName)) {return 1;}try {in = getInputStreamFromUrl(urlStr);File resultFile = fu.writer2SDFromIinput(path, fileName, in);if (resultFile == null) {return -1;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {try {in.close();}catch(Exception e) {e.printStackTrace();return -1;}}return 0;}/** * get stream from url * @param urlStr * @return * @throws IOException */public InputStream getInputStreamFromUrl(String urlStr) throws IOException {url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();InputStream inputStream = urlConn.getInputStream();return inputStream;}}