zoukankan      html  css  js  c++  java
  • Android开发进阶:如何读写Android文件

    Android主要有四大主要组件组成:Activity、ContentProvider、Service、Intent组成。Android文件的运行主要需要读写四大组件的文件。本文将介绍如何读写Android文件,希望对正在进行Android开发的朋友有所帮助。

      文件存放位置

      在Android中文件的I/O是存放在/data/data/<package name>/file/filename目录下。

      提示:Android是基于linux系统的,在linux的文件系统中不存在类似于Windows的磁盘分区现象,其是以一个正斜杠“/”开头。

      Android中得到输入输出流

      在Android中,对于流的操作十分简单。在Context类中有如下两个方法可以直接得到文件输入输出流:

    1. public FileInputStream   openFileInput  (String name)  
    2. public FileOutputStream openFileOutput (String name, int mode)

      顾名思义,通过如上方法就可以得到文件输入输出流。对于第二个方法中的mode,有如下四种模式:

      ◆Use 0 or MODE_PRIVATE( the default operation) :用0表示默认值,只能够创建文件的应用程序访问该文件,每次文件写入为覆盖方式。

      ◆MODE_APPEND to append to an existing file: 每次文件写入为追加方式,类似于StringBuffer中的append()方法。

      ◆MODE_WORLD_READABLE  :只有读权限。

      ◆MODE_WORLD_WRITEABLE :只有写权限。

      提示:如果想同时得到读与写的权限,则可以在mode处通过如下方式创建:

    MODE_WORLD_READABLE+ MODE_WORLD_WRITEABLE 

      对于Java SE部分的补充

      FileOutputStream:

      public void write(byte[] b) throws IOException 该方法可将指定的字节数组写入文件输出流

      FileInputStream:

      public int read(byte[] b) throws IOException 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。

      对于输出流直接使用write方法即可,可参考如下代码:

      Java代码

    1. <span style="white-space: pre;"></span>/**   
    2. * 写入数据
    3. *
    @param fs
    4. *
    @param content
    5.
    */
    6. publicvoid fileWrite(FileOutputStream fos,String content){
    7. byte[] contentcontentByteArray = content.getBytes();
    8. try {
    9. fos.write(contentByteArray);
    10. } catch (IOException e1) {
    11. e1.printStackTrace();
    12. }
    13. try {//关闭流
    14. fos.close();
    15. } catch (IOException e) {
    16. e.printStackTrace();
    17. }
    18. }

      对于输入流,出于性能考虑,可先使用ByteArrayOutputStream,向内存中创建一个字符数组,当将文件读完后,在读入,参考如下代码:

      Java代码

    1.           * 读数据    
    2. * @param fis
    3. * @return
    4. */
    5. public String fileRead(FileInputStream fis){
    6. ByteArrayOutputStream baos =new ByteArrayOutputStream();
    7. byte[] buffer =newbyte[1024];
    8. int len =-1;
    9. try {
    10. while((len=(fis.read(buffer))) !=-1){
    11. baos.write(buffer,0,len);
    12. }
    13. } catch (IOException e) {
    14. e.printStackTrace();
    15. }
    16. String result =new String(baos.toByteArray());
    17. //System.out.println(result);
    18. try {
    19. baos.close();
    20. fis.close();
    21. } catch (IOException e) {
    22. e.printStackTrace();
    23. }
    24. return result;
    25. }

      ByteArrayOutputStream:此类实现了一个输出流,其中的数据被写入一个 byte 数组。

      public void write(byte[] b,int off,int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte 数组输出流。

    原文:http://www.codesocang.com/jiaocheng/shoujikaifa/2013/0508/4479.html

  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/miaoqing/p/3758592.html
Copyright © 2011-2022 走看看