Android 下载文件及写入SD卡-阿里云开发者社区

开发者社区> 古镇月影> 正文

Android 下载文件及写入SD卡

简介: 引用:http://zhoujingxian.iteye.com/blog/859597 Android 下载文件及写入SD卡,实例代码   Main.xml代码                        Androidmanifest.
+关注继续查看

引用:http://zhoujingxian.iteye.com/blog/859597

Android 下载文件及写入SD卡,实例代码

 

Main.xml代码 
 收藏代码
  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.   
  14. <Button    
  15.     android:id="@+id/downloadMp3"  
  16.     android:layout_width="fill_parent"   
  17.     android:layout_height="wrap_content"   
  18.     android:text="下载MP3文件"  
  19.     />  
  20. </LinearLayout>  

 

Androidmanifest.xml代码 
 收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="com.learning.example"  
  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="8" />  
  17.   
  18. <!-- 访问网络和操作SD卡 加入的两个权限配置-->  
  19. <uses-permission android:name="android.permission.INTERNET"/>  
  20. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  21. </manifest>   

 

下载助手类httpdownloader 代码 
 收藏代码
  1. package com.learning.example.util;  
  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.         BufferedReader buffer = null;  
  29.         try {  
  30.             url = new URL(urlStr);  
  31.             HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();  
  32.             buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));  
  33.             while( (line = buffer.readLine()) != null){  
  34.                 sb.append(line);  
  35.             }  
  36.               
  37.         }   
  38.         catch (Exception e) {  
  39.             e.printStackTrace();  
  40.         }  
  41.         finally{  
  42.             try {  
  43.                 buffer.close();  
  44.             } catch (IOException e) {  
  45.                 e.printStackTrace();  
  46.             }  
  47.         }  
  48.         return sb.toString();  
  49.     }  
  50.   
  51.     /**  
  52.      *   
  53.      * @param urlStr  
  54.      * @param path  
  55.      * @param fileName  
  56.      * @return   
  57.      *      -1:文件下载出错  
  58.      *       0:文件下载成功  
  59.      *       1:文件已经存在  
  60.      */  
  61.     public int downFile(String urlStr, String path, String fileName){  
  62.         InputStream inputStream = null;  
  63.         try {  
  64.             FileUtils fileUtils = new FileUtils();  
  65.               
  66.             if(fileUtils.isFileExist(path + fileName)){  
  67.                 return 1;  
  68.             } else {  
  69.                 inputStream = getInputStreamFromURL(urlStr);  
  70.                 File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream);  
  71.                 if(resultFile == null){  
  72.                     return -1;  
  73.                 }  
  74.             }  
  75.         }   
  76.         catch (Exception e) {  
  77.             e.printStackTrace();  
  78.             return -1;  
  79.         }  
  80.         finally{  
  81.             try {  
  82.                 inputStream.close();  
  83.             } catch (IOException e) {  
  84.                 e.printStackTrace();  
  85.             }  
  86.         }  
  87.         return 0;  
  88.     }  
  89.       
  90.     /**  
  91.      * 根据URL得到输入流  
  92.      * @param urlStr  
  93.      * @return  
  94.      */  
  95.     public InputStream getInputStreamFromURL(String urlStr) {  
  96.         HttpURLConnection urlConn = null;  
  97.         InputStream inputStream = null;  
  98.         try {  
  99.             url = new URL(urlStr);  
  100.             urlConn = (HttpURLConnection)url.openConnection();  
  101.             inputStream = urlConn.getInputStream();  
  102.               
  103.         } catch (MalformedURLException e) {  
  104.             e.printStackTrace();  
  105.         } catch (IOException e) {  
  106.             e.printStackTrace();  
  107.         }  
  108.           
  109.         return inputStream;  
  110.     }  
  111. }  

 

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

 

主程序类download 代码 
 收藏代码
  1. package com.learning.example;  
  2.   
  3. import com.learning.example.util.HttpDownloader;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10.   
  11. public class Download extends Activity {  
  12.     private Button downlaodTxtButton ;  
  13.     private Button downlaodMP3Button ;  
  14.       
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.         downlaodTxtButton = (Button)findViewById(R.id.downloadTxt);  
  20.         downlaodTxtButton.setOnClickListener(new DownloadTxtListener());  
  21.           
  22.         downlaodMP3Button = (Button)findViewById(R.id.downloadMp3);  
  23.         downlaodMP3Button.setOnClickListener(new DownloadMP3Listener());  
  24.     }  
  25.       
  26.     class DownloadTxtListener implements OnClickListener{  
  27.   
  28.         @Override  
  29.         public void onClick(View v) {  
  30.             HttpDownloader downloader = new HttpDownloader();  
  31.             String lrc = downloader.download("http://172.16.11.9:8080/test/1.lrc");  
  32.             System.out.println(lrc);  
  33.         }  
  34.           
  35.     }  
  36.       
  37.     class DownloadMP3Listener implements OnClickListener{  
  38.   
  39.         @Override  
  40.         public void onClick(View v) {  
  41.             HttpDownloader downloader = new HttpDownloader();  
  42.             int result = downloader.downFile("http://172.16.11.9:8080/test/1.mp3""voa/""1.map3");  
  43.             System.out.println(result);  
  44.         }  
  45.           
  46.     }  
  47. }  

Notice:访问网络和操作SD卡 记得加入的两个权限配置

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26547 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8666 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10500 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12309 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4573 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
3748 0
+关注
1701
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载