文件下载类 HttpDownloader,内存卡操作类 FileUtils

来源:互联网 发布:java入门要多久 编辑:程序博客网 时间:2024/05/16 19:57

转载自:http://www.cnblogs.com/luzhiyuan/archive/2012/05/05/2485347.html

HttpDownloader代码

package mars.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.MalformedURLException; import java.net.URL;   public class HttpDownloader {     private URL url = null;      /**      * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容      * 1.创建一个URL对象      * 2.通过URL对象,创建一个HttpURLConnection对象      * 3.得到InputStram      * 4.从InputStream当中读取数据      * @param urlStr      * @return      */     public String download(String urlStr) {         StringBuffer sb = new StringBuffer();         String line = null;         BufferedReader buffer = null;         try {             // 创建一个URL对象             url = new URL(urlStr);             // 创建一个Http连接             HttpURLConnection urlConn = (HttpURLConnection) url                     .openConnection();             // 使用IO流读取数据             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();     }      /**      * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在      */     public int downFile(String urlStr, String path, String fileName) {         InputStream inputStream = null;         try {             FileUtils fileUtils = new FileUtils();                          if (fileUtils.isFileExist(path + fileName)) {                 return 1;             } else {                 inputStream = getInputStreamFromUrl(urlStr);                 File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream);                 if (resultFile == null) {                     return -1;                 }             }         } catch (Exception e) {             e.printStackTrace();             return -1;         } finally {             try {                 inputStream.close();             } catch (Exception e) {                 e.printStackTrace();             }         }         return 0;     }      /**      * 根据URL得到输入流      *       * @param urlStr      * @return      * @throws MalformedURLException      * @throws IOException      */     public InputStream getInputStreamFromUrl(String urlStr)             throws MalformedURLException, IOException {         url = new URL(urlStr);         HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();         InputStream inputStream = urlConn.getInputStream();         return inputStream;     } }
FileUtils代码

package mars.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() {         //得到当前外部存储设备的目录         // /SDCARD         SDPATH = Environment.getExternalStorageDirectory() + "/";     }     /**      * 在SD卡上创建文件      *       * @throws IOException      */     public File creatSDFile(String fileName) throws IOException {         File file = new File(SDPATH + fileName);         file.createNewFile();         return file;     }          /**      * 在SD卡上创建目录      *       * @param dirName      */     public File creatSDDir(String dirName) {         File dir = new File(SDPATH + dirName);         dir.mkdirs();         return dir;     }      /**      * 判断SD卡上的文件夹是否存在      */     public boolean isFileExist(String fileName){         File file = new File(SDPATH + fileName);         return file.exists();     }          /**      * 将一个InputStream里面的数据写入到SD卡中      */     public File write2SDFromInput(String path,String fileName,InputStream input){         File file = null;         OutputStream output = null;         try{             creatSDDir(path);             file = creatSDFile(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;     }  }