Mars Android视频学习笔记——01

    技术2022-05-19  27

    转载时请注明转自:http://blog.csdn.net/sam_zhang1984

    交流可加新浪微博:Android开发人

     

     

    文件下载就涉及到两个问题:

    1.          下载 :使用网络协议下载文件,这里主要是讲利用 HTTP 协议下载。

    2.          保存 :文件可以保存到手机内存,也可以下载到 SDCard ,下到 SD 卡是比较常用的。

     

    文件下载的主要步骤有:

    1)   创建一个 HttpURLConnection 对象。通过 URL openConnection 方法,就可以得到一个 HttpURLConnection 对象,所以要先创建一个 URL 对象;

    //得到一个URL对象 m_URL = new URL(strURL); //由URL对象得到一个HttpURLConnection对象 urlConn = (HttpURLConnection)m_URL.openConnection();

    2)   通过 HttpURLConnection 对象的 getInputStream 方法可以得到一个 InputStream 对象;

    /*由HttpURLConnection对象的方法读出字节流,并转成InputStreamReader,InputStreamReader是字 * 节流通向字符流的桥梁: 它使用指定的 charset 读取 字节并将其解码为字符;最后再转成BufferedReader * 这样就便于一行一行读数据了! */ bufferR = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));

    3)   获取网络访问的权限。

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

    文件保存(保存到 SDCard ):

    1)         得到设备 SD 卡的目录:使用 Environment.getExternalStorageDirectory 得到 SD 卡的目录;

    //得到当前外部存储设备的目录 // /SDCARD SDPATH = Environment.getExternalStorageDirectory() + "/";

    2)         获取访问 SD 卡的权限;

     

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

    3)         SD 卡里写入文件,这里涉及到 JAVA 的文件操作。

     

    SD 卡里面写入文件就涉及到了 JAVA IO 操作了,向卡里加入文件主要有以下几个步骤:

    a)          创建存放文件的目录;

    public File creatSDDir(String dirName) { File dir = new File(SDPATH + dirName); dir.mkdir(); return dir; }

    b)         在目录中创建文件;

    public File creatSDFile(String fileName) throws IOException { File file = new File(SDPATH + fileName); file.createNewFile(); return file; }

     

    c)         根据文件对象创建一个 OutPutStream 向文件里写入内容。

      OutputStream output = null; InputStream input; file = creatSDFile(path + fileName); output = new FileOutputStream(file); byte buffer [] = new byte[4 * 1024]; while((input.read(buffer)) != -1){ output.write(buffer); }

     

    JAVA IO 操作各种类的记法:

    1、   stream 结尾的是字节流, reader writer 结尾的是字符流;

    2、   Buffer 开头的是缓冲处理流;

    3、   OutputSteamWriter :即是把一个输出字节流,转换成一个输了字符流。

    4、   处理流方法名后面是 stream ,则其参数是 Inputsteam 类型的字节流;如果处理流方法名后面是 reader writer ,则其参数是 reader writer 类型的字符流;

    IO流的操作相对比较复杂,方法、类型都比较多,还有得加强基础!

    下面是一个好的IO编程习惯:

    良好的编程习惯 是先写 flush ,再写 close 。因为 close 直接就把数据流给释放掉,

    但如果这时缓冲区里还有数据,就无法再向目标写入了,所以应该先调用 flush 把缓冲区

    的所有数据写到目的地。

    try{ . . . . . output.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ output.close(); } catch(Exception e){ e.printStackTrace(); } }


    最新回复(0)