mars老师[Android开发视频教学].01_18 文件下载 源码

mars老师[Android开发视频教学].01_18 文件下载 源码

项目截图:

 

以下是项目各个文件的代码:

=>>Download.java

[java]  view plain copy
  1. package mars.download;  
  2.   
  3. import mars.utils.HttpDownloader;  
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.   
  10. public class Download extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     private Button downloadTxtButton;  
  13.     private Button downloadMp3Button;  
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.main);  
  18.         downloadTxtButton = (Button)findViewById(R.id.downloadTxt);  
  19.         downloadTxtButton.setOnClickListener(new DownloadTxtListener());  
  20.         downloadMp3Button = (Button)findViewById(R.id.downloadMp3);  
  21.         downloadMp3Button.setOnClickListener(new DownloadMp3Listener());  
  22.     }  
  23.       
  24.     class DownloadTxtListener implements OnClickListener{  
  25.   
  26.         @Override  
  27.         public void onClick(View v) {  
  28.             HttpDownloader httpDownloader = new HttpDownloader();  
  29.             String lrc = httpDownloader.download("http://192.168.1.107:8080/voa1500/a1.lrc");  
  30.             System.out.println(lrc);  
  31.         }  
  32.           
  33.     }  
  34.     class DownloadMp3Listener implements OnClickListener{  
  35.   
  36.         @Override  
  37.         public void onClick(View v) {  
  38.             // TODO Auto-generated method stub  
  39.             HttpDownloader httpDownloader = new HttpDownloader();  
  40.             int result = httpDownloader.downFile("http://192.168.1.107:8080/voa1500/a1.mp3""voa/""a1.mp3");  
  41.             System.out.println(result);  
  42.         }  
  43.           
  44.     }  
  45.       
  46. }  


=>>HttpDownloader.java

 

[java]  view plain copy
  1. package mars.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.   
  13. public class HttpDownloader {  
  14.     private URL url = null;  
  15.   
  16.     /** 
  17.      * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容 
  18.      * 1.创建一个URL对象 
  19.      * 2.通过URL对象,创建一个HttpURLConnection对象 
  20.      * 3.得到InputStram 
  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.         BufferedReader buffer = null;  
  29.         try {  
  30.             // 创建一个URL对象  
  31.             url = new URL(urlStr);  
  32.             // 创建一个Http连接  
  33.             HttpURLConnection urlConn = (HttpURLConnection) url  
  34.                     .openConnection();  
  35.             // 使用IO流读取数据  
  36.             buffer = new BufferedReader(new InputStreamReader(urlConn  
  37.                     .getInputStream()));  
  38.             while ((line = buffer.readLine()) != null) {  
  39.                 sb.append(line);  
  40.             }  
  41.         } catch (Exception e) {  
  42.             e.printStackTrace();  
  43.         } finally {  
  44.             try {  
  45.                 buffer.close();  
  46.             } catch (Exception e) {  
  47.                 e.printStackTrace();  
  48.             }  
  49.         }  
  50.         return sb.toString();  
  51.     }  
  52.   
  53.     /** 
  54.      * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在 
  55.      */  
  56.     public int downFile(String urlStr, String path, String fileName) {  
  57.         InputStream inputStream = null;  
  58.         try {  
  59.             FileUtils fileUtils = new FileUtils();  
  60.               
  61.             if (fileUtils.isFileExist(path + fileName)) {  
  62.                 return 1;  
  63.             } else {  
  64.                 inputStream = getInputStreamFromUrl(urlStr);  
  65.                 File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream);  
  66.                 if (resultFile == null) {  
  67.                     return -1;  
  68.                 }  
  69.             }  
  70.         } catch (Exception e) {  
  71.             e.printStackTrace();  
  72.             return -1;  
  73.         } finally {  
  74.             try {  
  75.                 inputStream.close();  
  76.             } catch (Exception e) {  
  77.                 e.printStackTrace();  
  78.             }  
  79.         }  
  80.         return 0;  
  81.     }  
  82.   
  83.     /** 
  84.      * 根据URL得到输入流 
  85.      *  
  86.      * @param urlStr 
  87.      * @return 
  88.      * @throws MalformedURLException 
  89.      * @throws IOException 
  90.      */  
  91.     public InputStream getInputStreamFromUrl(String urlStr)  
  92.             throws MalformedURLException, IOException {  
  93.         url = new URL(urlStr);  
  94.         HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();  
  95.         InputStream inputStream = urlConn.getInputStream();  
  96.         return inputStream;  
  97.     }  
  98. }  


 

 

=>>FileUtils.java

[java]  view plain copy
  1. package mars.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.     private String SDPATH;  
  13.   
  14.     public String getSDPATH() {  
  15.         return SDPATH;  
  16.     }  
  17.     public FileUtils() {  
  18.         //得到当前外部存储设备的目录  
  19.         // /SDCARD  
  20.         SDPATH = Environment.getExternalStorageDirectory() + "/";  
  21.     }  
  22.     /** 
  23.      * 在SD卡上创建文件 
  24.      *  
  25.      * @throws IOException 
  26.      */  
  27.     public File creatSDFile(String fileName) throws IOException {  
  28.         File file = new File(SDPATH + fileName);  
  29.         file.createNewFile();  
  30.         return file;  
  31.     }  
  32.       
  33.     /** 
  34.      * 在SD卡上创建目录 
  35.      *  
  36.      * @param dirName 
  37.      */  
  38.     public File creatSDDir(String dirName) {  
  39.         File dir = new File(SDPATH + dirName);  
  40.         dir.mkdir();  
  41.         return dir;  
  42.     }  
  43.   
  44.     /** 
  45.      * 判断SD卡上的文件夹是否存在 
  46.      */  
  47.     public boolean isFileExist(String fileName){  
  48.         File file = new File(SDPATH + fileName);  
  49.         return file.exists();  
  50.     }  
  51.       
  52.     /** 
  53.      * 将一个InputStream里面的数据写入到SD卡中 
  54.      */  
  55.     public File write2SDFromInput(String path,String fileName,InputStream input){  
  56.         File file = null;  
  57.         OutputStream output = null;  
  58.         try{  
  59.             creatSDDir(path);  
  60.             file = creatSDFile(path + fileName);  
  61.             output = new FileOutputStream(file);  
  62.             byte buffer [] = new byte[4 * 1024];  
  63.             while((input.read(buffer)) != -1){  
  64.                 output.write(buffer);  
  65.             }  
  66.             output.flush();  
  67.         }  
  68.         catch(Exception e){  
  69.             e.printStackTrace();  
  70.         }  
  71.         finally{  
  72.             try{  
  73.                 output.close();  
  74.             }  
  75.             catch(Exception e){  
  76.                 e.printStackTrace();  
  77.             }  
  78.         }  
  79.         return file;  
  80.     }  
  81.   
  82. }  


 

 

=>>AndroidMainfest.xml

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="mars.download"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  7.         <activity android:name=".Download"  
  8.                   android:label="@string/app_name">  
  9.             <intent-filter>  
  10.                 <action android:name="android.intent.action.MAIN" />  
  11.                 <category android:name="android.intent.category.LAUNCHER" />  
  12.             </intent-filter>  
  13.         </activity>  
  14.   
  15.     </application>  
  16.     <uses-sdk android:minSdkVersion="4" />  
  17.   
  18.     <uses-permission android:name="android.permission.INTERNET"/>  
  19.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  20. </manifest>   


 

=>>main.xml

[html]  view plain copy
  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. <Button    
  8.     android:id="@+id/downloadTxt"  
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="下载文本文件"  
  12.     />  
  13. <Button    
  14.     android:id="@+id/downloadMp3"  
  15.     android:layout_width="fill_parent"   
  16.     android:layout_height="wrap_content"   
  17.     android:text="下载MP3文件 "  
  18.     />  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值