Android主要有四大主要组件组成:Activity、ContentProvider、Service、Intent组成。Android文件的运行主要需要读写四大组件的文件。本文将介绍如何读写Android文件,希望对正在进行Android开发的朋友有所帮助。
文件存放位置
在Android中文件的I/O是存放在/data/data/<package name>/file/filename目录下。
提示:Android是基于linux系统的,在linux的文件系统中不存在类似于Windows的磁盘分区现象,其是以一个正斜杠“/”开头。
Android中得到输入输出流
在Android中,对于流的操作十分简单。在Context类中有如下两个方法可以直接得到文件输入输出流:
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处通过如下方式创建:
对于Java SE部分的补充
FileOutputStream:
public void write(byte[] b) throws IOException 该方法可将指定的字节数组写入文件输出流
FileInputStream:
public int read(byte[] b) throws IOException 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。
对于输出流直接使用write方法即可,可参考如下代码:
Java代码
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 . }
对于输入流,出于性能考虑,可先使用ByteArrayOutputStream,向内存中创建一个字符数组,当将文件读完后,在读入,参考如下代码:
Java代码
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 代码下载