Android中文件的读写

作者:LEGEND

qq158067568

关于Android中文件的读写

文件存放位置

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

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

Android中得到输入输出流

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

public FileInputStream openFileInput (String name)

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

对于SE部分的补充

FileOutputStream

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

FileInputStream

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

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

/**          * 写入数据          * @param fs          * @param content          */         public void fileWrite(FileOutputStream fos,String content){                   byte[] contentByteArray = content.getBytes();                   try {                            fos.write(contentByteArray);                   } catch (IOException e1) {                            e1.printStackTrace();                   }                   try {//关闭流                            fos.close();                   } catch (IOException e) {                            e.printStackTrace();                   }         }

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

/**

          * 读数据          * @param fis          * @return          */         public String fileRead(FileInputStream fis){                   ByteArrayOutputStream baos = new ByteArrayOutputStream();                   byte[] buffer = new byte[1024];                   int len = -1;                   try {                            while((len=(fis.read(buffer))) != -1){                                     baos.write(buffer,0,len);                            }                   } catch (IOException e) {                            e.printStackTrace();                   }                   String result = new String(baos.toByteArray());//System.out.println(result);                                   try {                            baos.close();                            fis.close();                   } catch (IOException e) {                            e.printStackTrace();                   }                   return result;         }

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

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

可参考代码:FileIO

更多相关文章

  1. 【Android Studio使用教程1】Android Studio导入项目的几种方法
  2. Android 常用UI控件的一些属性设置(在.xml文件里进行的设置)
  3. Android多媒体开发(5)————利用Android AudioTrack播放mp3文件
  4. Android 中三种使用线程的方法
  5. AndroiManifest.xml文件中android属性
  6. Android 将从网络获取的数据缓存到私有文件
  7. android删除sd卡文件
  8. Android实现文件夹目录选择器
  9. Android Activity onConfigurationChanged()方法 监听状态改变

随机推荐

  1. android:contentDescription 的用途
  2. android:fitsSystemWindows
  3. Android常用adb命令总结
  4. framework的调试与编译方法
  5. Android(安卓)application context/activ
  6. android中padding和margin的区别
  7. android 中生成xml文件
  8. android EditText imeOptions属性和各属
  9. [Android(安卓)中级]Voip之CSipSimple类
  10. Android系统启动流程 -- android