社区编辑申请
注册/登录
Android开发进阶:如何读写Android文件
移动开发 Android
Android文件的运行主要需要读写四大组件的文件。本文将介绍如何读写Android文件,希望对正在进行Android开发的朋友有所帮助。

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

51CTO推荐阅读: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处通过如下方式创建:

  1. 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.          public void 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.          }    
  19.  

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

Java代码

  1.           * 读数据    
  2.           * @param fis    
  3.           * @return    
  4.           */    
  5.          public String fileRead(FileInputStream fis){    
  6.                    ByteArrayOutputStream baos = new ByteArrayOutputStream();    
  7.                    byte[] buffer = new byte[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 数组输出流。

可参考代码:FileIO 代码下载

【编辑推荐】

  1. 十二张大图详解如何在Eclipse上搭建Android 2.3环境
  2. 图详解Android 2.3 SDK安装教程
  3. Android平台SQLite快速入门实践
  4. Android开发中AsyncTask实现异步处理任务的方法
  5. Android开发中实现多点触摸的方法
责任编辑:佚名 来源: javaeye
相关推荐

2013-12-27 09:54:58

2021-09-29 09:42:32

2021-08-25 07:43:17

2011-10-18 10:25:08

Android应用开发

2011-10-18 10:17:39

Android应用开发

2022-06-15 08:21:49

Linux运维工程师

2021-09-10 07:31:54

2021-09-08 06:51:52

AndroidRetrofit原理

2022-06-16 17:02:49

微软智能云混合云Azure

2022-01-11 18:20:42

2021-09-01 06:48:16

2022-05-27 10:00:06

C++游戏引擎

2022-05-30 16:57:44

TypeScriptTS前端

2022-05-26 07:41:24

Ftp服务器

2022-06-15 08:25:07

Python天气数据可视化分析

2021-09-02 07:00:01

2021-10-15 09:19:17

2022-06-22 09:19:55

HDC鸿蒙ADB命令

2021-09-09 06:55:43

2022-04-24 15:26:38

服务卡鸿蒙

同话题下的热门内容

西瓜视频 iOS 播放器技术重构抖音支付十万级 TPS 流量发券实践2022 春节抖音视频红包系统设计与实现服乔布斯不服库克,苹果传奇设计团队解散内幕曝光专家:如何保护您的个人信息和Apple邮箱帐户苹果发布 iOS16 Beta 2!一起来看看更新了啥SwiftUI 状态管理系统指南Android系统中音视频播放技术探究

编辑推荐

2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?初学者最容易学的六种编程语言CVPR 2017论文解读:特征金字塔网络FPN手把手教你搭建PHP版RabbitMQ消息队列开发环境及Demo实践微信小程序“反编译”实战(一):解包
我收藏的内容
点赞
收藏

51CTO技术栈公众号