当前位置:操作系统 > 安卓/Android >>

Android:文件下载和写入SD卡学习小结

今天刚刚学习完Android文件下载和写入SD卡的,以后做一个小结,以供以后学习查阅:

 一、文件下载
      Android开发中,有时需要从网上下载一些资源以供用户使用,Android API中已经提供了很多直接可以用的类供大家使用,一般文件下载需要通过三个步骤:
      1.创建一个HttpURLConnection对象:
[java] 
// 创建一个URL对象,urlStr指的是网络IP地址 
url = new URL(urlStr); 
// 创建一个HttpURLConnection连接 
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); 
      2.获得一个InputStream对象:
[java] 
InputStream input=null; 
input=urlConn.getInputStream(); 
      3.设置访问网络的权限:
[java] 
//在AndroidManifest.xml配置文件中加入权限信息 
<uses-permission android:name="android.permission.INTERNET"/> 
二、访问并写入SD卡
     由于手机内存有限,所以一般需要将资料放入大容量容器SD卡中,不同手机SD卡所在目录不一样,这就需要咱们通过一个统一的函数找到SD卡所在的目录,再对它进行操作,Android中提供了一个函数,可以查找到基本上所有类型型号的手机SD卡所在的目录:
[java]
//得到当前设备SD卡的目录 
Environment.getExternalStorageDirectory(); 
     在访问SD卡前还必须在配置文件中设置权限,这样才可以最SD卡进行存取操作:
[java] view plaincopy
//在AndroidManifest.xml配置文件中加入权限信息 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
     以下是一个对SD操作经常用到的类,以后如果需要对SD卡操作,直接可以拿过来用:
[java] 
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.mkdir(); 
        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; 
    } 


三、实例演示
     在对以上文件下载和SD卡访问基本知识了解的基础上,下面进行举例说明:
     文件下载一般有文本文件和字节文件,不同文件下载的方式不同,但是都需要通过上面所说的一般步骤,即都需要首先得到一个InputStream对象,然后在对这个对象进行不同的操作,以下是对一个图片文件(字节文件)进行处理,我们在以上FileUtils类的基础上创建一个HttpDownLoader类,以供文件下载时作为工具类调用:
[java] 
public class HttpDownloader { 
    private URL url=null; 
    FileUtils fileUtils=new FileUtils(); 
    public int downfile(String urlStr,String path,String fileName) 
    { 
        if(fileUtils.isFileExist(path+fileName)) 
            {return 1;} 
        else{ 
         
        try { 
            InputStream input=null; 
            input = getInputStream(urlStr); 
            File resultFile=fileUtils.write2SDFromInput(path, fileName, input); 
    &n

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,