• android之download


    有三个java类

    Download.java

    View Code
     1 package tk.download;
     2 
     3 
     4 import tk.utils.HttpDownloader;
     5 import android.os.Bundle;
     6 import android.R.integer;
     7 import android.app.Activity;
     8 import android.view.Menu;
     9 import android.view.View;
    10 import android.view.View.OnClickListener;
    11 import android.widget.Button;
    12 
    13 public class Download extends Activity {
    14     
    15     /**
    16      *创建一个HttpURLConnection对象
    17      *HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
    18      *获得一个InputStream对象
    19      *urlConn.getInputStream()
    20      *访问网络的权限(在mainfest中声明)
    21      *android.permission.INTERNET 
    22      * 
    23      *访问SDCARD
    24      *得到当前设备SD卡的目录
    25      *Environment.getExternalStorageDirectory()
    26      *访问SD卡的权限
    27      *android.permission.WRITE_EXTERNAL_STORAGE
    28      * 
    29      * /
    30     /**Called when the activity is first created.*/
    31     
    32     private Button downloadTxtButton;
    33     private Button downloadMp3Button;
    34 
    35     
    36     @Override
    37     public void onCreate(Bundle savedInstanceState) {
    38         super.onCreate(savedInstanceState);
    39         setContentView(R.layout.main);
    40         downloadMp3Button=(Button)findViewById(R.id.downloadMp3);
    41         downloadMp3Button.setOnClickListener(new DownloadMp3Listener());
    42         downloadTxtButton=(Button)findViewById(R.id.downloadTxt);
    43         downloadTxtButton.setOnClickListener(new DownloadTxtListener());
    44         
    45         
    46     }
    47     
    48     class DownloadTxtListener implements OnClickListener{
    49 
    50         @Override
    51         public void onClick(View v) {
    52             HttpDownloader httpDownloader=new HttpDownloader();
    53             System.out.println("begin");
    54             String lrc = httpDownloader.download("http://125.222.201.90/home/download4.asp?FileName=hello.txt");
    55             System.out.println(lrc);
    56             System.out.println("end");
    57             
    58             
    59         }
    60         
    61         
    62     }
    63     
    64     class DownloadMp3Listener implements OnClickListener{
    65 
    66         @Override
    67         public void onClick(View v) {
    68             HttpDownloader httpDownloader=new HttpDownloader();
    69             System.out.println("begin");
    70             int result = httpDownloader.downFile("http://125.222.201.90/home/download4.asp?FileName=Layout_04.apk", "tk/", "test.apk");
    71             System.out.println(result);
    72             
    73         }
    74 
    75     }
    76     
    77     
    78 
    79     @Override
    80     public boolean onCreateOptionsMenu(Menu menu) {
    81         getMenuInflater().inflate(R.menu.main, menu);
    82         return true;
    83     }
    84 }

    FileUtils.java

    View Code
     1 package tk.utils;
     2 
     3 import java.io.File;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 import java.io.InputStream;
     7 import java.io.OutputStream;
     8 
     9 import android.os.Environment;
    10 
    11 public class FileUtils {
    12     
    13     private String SDPATH;
    14     
    15     public String getSDPATH() {
    16         return SDPATH;
    17     }
    18 
    19     public FileUtils() {
    20         //得到当前外部存储设备的目录  /SDCARD
    21         SDPATH = Environment.getExternalStorageDirectory() + "/";
    22         //SDPATH ="/";
    23     }
    24 
    25 /**
    26 * 在SD卡上创建目录
    27 * 
    28 * @param dirName
    29 */
    30 
    31     public File creatSDDir(String dirName) {
    32         File file = new File(SDPATH + dirName);
    33         file.mkdirs();
    34         return file;
    35     }
    36 
    37 /**
    38 * 在SD卡上创建文件
    39 * 
    40 * @throws IOException
    41 */
    42 
    43     public File creatSDFile(String fileName) throws IOException {
    44         File file = new File(SDPATH + fileName);
    45         file.createNewFile();
    46         return file;
    47     }
    48 
    49  
    50 
    51 /**
    52 * 判断SD卡上的文件夹是否存在
    53 */
    54 
    55     public boolean isFileExist(String fileName){
    56         File file = new File(SDPATH + fileName);
    57         return file.exists();
    58     }
    59 
    60 /**
    61 * 将一个InputStream里面的数据写入到SD卡中
    62 */
    63 
    64     public File write2SDFromInput(String path,String fileName,InputStream inputStream){
    65     
    66         File file = null;
    67         OutputStream outputStream = null;
    68         
    69         try{
    70             creatSDDir(path);
    71             file = creatSDFile(path + fileName);
    72             outputStream = new FileOutputStream(file);
    73             byte buffer [] = new byte[4 * 1024];
    74             while((inputStream.read(buffer)) != -1){
    75                 
    76                 outputStream.write(buffer);
    77                 
    78             }
    79             outputStream.flush();
    80             
    81         }catch(Exception e){
    82             
    83             e.printStackTrace();
    84             
    85         }finally{
    86             
    87             try{
    88                 outputStream.close();
    89             }catch(Exception e){
    90                 e.printStackTrace();
    91             }
    92             
    93         }
    94         
    95         return file;
    96     
    97     }
    98 
    99 }

    HttpDownloader.java

    View Code
      1 package tk.utils;
      2 
      3 import java.io.BufferedReader;
      4 import java.io.File;
      5 import java.io.IOException;
      6 import java.io.InputStream;
      7 import java.io.InputStreamReader;
      8 import java.net.HttpURLConnection;
      9 import java.net.MalformedURLException;
     10 import java.net.URL;
     11 
     12 public class HttpDownloader {
     13 
     14     private URL url = null;
     15     
     16     /**
     17      * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容
     18      * 1.创建一个URL对象
     19      * 2.通过URL对象,创建一个HttpURLConnection对象
     20      * 3.得到Inputstream
     21      * 4.从InputStream当中读取数据
     22      * @param urlStr
     23      * @return
     24      */
     25     public String download(String urlStr){
     26         StringBuffer sb = new StringBuffer();
     27         String line = null;
     28         
     29         BufferedReader buffer = null;
     30         
     31         try{
     32             //创建一个Http对象
     33             url = new URL(urlStr);
     34             //创建一个Http连接
     35             HttpURLConnection urlconn = (HttpURLConnection)url.openConnection();
     36             //使用IO流读取数据
     37             buffer = new BufferedReader(new InputStreamReader(urlconn.getInputStream()));
     38             
     39             while((line = buffer.readLine())!=null){
     40                 sb.append(line);
     41             }
     42         }catch(Exception e){
     43             e.printStackTrace();            
     44         }finally{
     45             try{
     46                 buffer.close();
     47             }catch(Exception e){
     48                 e.printStackTrace();
     49             }
     50         }
     51         
     52         return sb.toString();
     53     }
     54     /**
     55      *该函数返回整形-1;代表下载文件出错,0代表下载文件成功,1 代表文件已存在
     56      */
     57     public int downFile(String urlStr, String path, String fileName) {
     58     
     59         InputStream inputStream = null;
     60         
     61         try {
     62             FileUtils fileUtils = new FileUtils(); 
     63             if (fileUtils.isFileExist(path + fileName)) {
     64                 return 1; //文件已经存在
     65             } else {
     66                 inputStream =getInputStreamFromUrl(urlStr);
     67                 if(inputStream==null)return 2;
     68                 File resultFile =fileUtils.write2SDFromInput(path,fileName,inputStream);  
     69                 if (resultFile == null){
     70                     return -1;  //下载文件出错
     71                 }
     72             }
     73         } catch (Exception e) {
     74             e.printStackTrace();
     75             return -1;
     76         } finally {
     77             try {
     78                 inputStream.close();
     79             } catch (Exception e) {
     80                 e.printStackTrace();
     81             }
     82         }
     83     return 0;
     84     }
     85     
     86      
     87     
     88     public InputStream getInputStreamFromUrl(String urlStr) throws MalformedURLException, IOException {
     89     
     90         InputStream inputStream=null;
     91         
     92         try{
     93             // 创建一个URL对象
     94            url = new URL(urlStr);
     95            // 创建一个Http连接
     96            HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
     97            // 使用IO流读取数据
     98            inputStream = urlConn.getInputStream();
     99            return inputStream;
    100         }catch (Exception e) {
    101             e.printStackTrace();
    102             return null;
    103         }finally {
    104            inputStream.close();
    105         }
    106     }
    107 
    108 }

    androidmainfest.xml

    View Code

    main.xml

    View Code
     1 <?xml version= "1.0" encoding ="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation= "vertical"
     4     android:layout_width= "fill_parent"
     5     android:layout_height= "fill_parent"
     6     >
     7     
     8     <Button 
     9         android:id="@+id/downloadTxt"
    10         android:layout_width="fill_parent"
    11         android:layout_height="wrap_content"
    12         android:text="downloadtxt"
    13         />
    14     
    15      <Button 
    16         android:id="@+id/downloadMp3"
    17         android:layout_width="fill_parent"
    18         android:layout_height="wrap_content"
    19         android:text="downloadMP3"
    20         />
    21 </LinearLayout>
  • 相关阅读:
    struts2 <s:iterator> 遍历方法
    JSP 基础之 JSTL <c:forEach>用法
    struts2 中 Session的使用简介
    Struts2 工作流程
    Aandroid Error之 新导入工程报Unable to resolve target 'android-18'和R cannot be resolved
    纯Html+Ajax和JSP两者对比的个人理解
    移动互联网App兼容性测试
    【转】【Mac】invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library
    【转】Mac使用apt-get
    有趣网址之家 – 收藏全球最有趣的网站
  • 原文地址:https://www.cnblogs.com/tiankonguse/p/2649610.html
Copyright © 2020-2023  润新知