android中文件IO_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > android中文件IO

android中文件IO

 2010/12/23 8:05:12  158067568  http://158067568.javaeye.com  我要评论(0)
  • 摘要:Android中文件的读写作者:LEGENDqq:158067568关于Android中文件的读写文件存放位置在Android中文件的I/O是存放在/data/data/<packagename>/file/filename目录下。提示:Android是基于linux系统的,在linux的文件系统中不存在类似于Windows的磁盘分区现象,其是以一个正斜杠“/”开头。Android中得到输入输出流在Android中,对于流的操作十分简单
  • 标签:android 文件

?

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

?

?

?

?

发表评论
用户名: 匿名