虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android的文件操作

Android的文件操作
类别:Android编程   作者:码皇   来源:互联网   点击:

Android的文件操作一、Android的文件操作简介要理解Android的文件存储,首先要明白Android是如何用什么方式获取和存入数据的。Android的文件操作都是通过流的方式进行的,即IO。Android的文件操作跟Java是一样

Android的文件操作

一、Android的文件操作简介

要理解Android的文件存储,首先要明白Android是如何用什么方式获取和存入数据的。Android的文件操作都是通过流的方式进行的,即IO。Android的文件操作跟Java是一样的,文件操作分为输入流(InputStream)和输出流(OutputStream),输入流用于获取文件数据,输出流用于存储文件。输入流和输出流都是很耗费内存空间的,所以在使用Android的IO时,除非特殊需要,一般在使用结束后要记得关闭IO通道。接下来我们就来讲解一下,InputStream和OutputStream。

1、InputStream

InputStream是一个抽象类,其表示字节输入流的所有类的超类。以下是InputStream经常会使用的一些方法。

void

close()
关闭此输入流并释放与该流关联的所有系统资源。

abstract int

read()
从输入流读取下一个数据字节。

int

read(byte[] b)
从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中。

int

read(byte[] b, int off, int len)
将输入流中最多 len 个数据字节读入字节数组。

其中close方法需要特别注意,要记得及时调用close方法关闭输入流。

2、OutputStream

OutputStream是一个抽象类,其表示字节输出流的所有类的超类。以下是OutputStream经常会使用的一些方法。

void

close()
关闭此输出流并释放与此流有关的所有系统资源。

void

write(byte[] b)
将 b.length 个字节从指定的字节数组写入此输出流。

void

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

abstract void

write(int b)
将指定的字节写入此输出流。

跟InputStream一样,要记得及时调用close方法关闭输出流。

二、InputStream和OutputStream的获取和使用。

1、操作Android的SD卡的文件

例如在Android中,需要往android手机的自带内存(非SD卡)中读写文件。

Activity的父类 Context 有方法可以获取输出和写入流。
分别是:
openFileOutput(name, mode);
openFileInput(name);
mode有
Context.MODE_PRIVATE; //默认,仅此程序私有
Context.MODE_APPEND; //追加方式
Context.MODE_WORLD_READABLE; //(其它程序)可读
Context.MODE_WORLD_WRITEABLE; //(其它程序)可写

注:SD卡IO需要权限:
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
android.permission.WRITE_EXTERNAL_STORAGE

2、使用FileInputStream获取文件

在1中我们谈到可以用openFileOutput(name, mode)和openFileInput(name)分别获取输出流和数据输入流,原Java中提供了FileInputStream和FileOutputStream类,分别继承于InputStream和OutputStream,在Android通过这个两个类也是可以获取输入流和输出流的。

1、FileInputStream的使用方法

以下是FileInputStream的构造方法

FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。

FileInputStream(FileDescriptor fdObj)
通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。

FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

相应代码:

    //newFilename为文件地址InputStream is= new FileInputStream(newFilename);

2、FileOutputStream的使用方法

以下是FileOutputStream的构造方法

FileOutputStream(File file)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

FileOutputStream(File file, boolean append)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

FileOutputStream(FileDescriptor fdObj)
创建一个向指定文件描述符处写入数据的输出文件流,该文件描述符表示一个到文件系统中的某个实际文件的现有连接。

FileOutputStream(String name)
创建一个向具有指定名称的文件中写入数据的输出文件流。

FileOutputStream(String name, boolean append)
创建一个向具有指定 name 的文件中写入数据的输出文件流。

相应代码:

    // newFilename为要生成的文件地址OutputStream os = new FileOutputStream(newFilename);


注:同样需要权限:
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
android.permission.WRITE_EXTERNAL_STORAGE

3、获取Android的Assets文件夹的数据

在Android中,有时候你不只需要在sd卡中获取文件,只需要从Assets中获取文件。那代码上可以如此处理。

InputStream is = context.getResources().getAssets().open(mfileName);

三、代码示例

1、从resource的asset中读取文件数据

    String fileName = "test.txt";
    //文件名字String res="";
    try{
    //得到资源中的asset数据流 InputStream in = getResources().getAssets().open(fileName);
    int length = in.available();
    byte [] buffer = new byte[length];
    in.read(buffer);
    res = EncodingUtils.getString(buffer, "UTF-8");
    }
    catch(Exception e){
    e.printStackTrace();
    }


2、读写SD卡中的文件。也就是/mnt/sdcard/目录下面的文件 :

    //写数据到SD中的文件public void writeFileSdcardFile(String fileName,String write_str){
    try{
    FileOutputStream fout = new FileOutputStream(fileName);
    byte [] bytes = write_str.getBytes();
    fout.write(bytes);
    fout.close();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    }
    //读SD中的文件public String readFileSdcardFile(String fileName){
    String res="";
    try{
    FileInputStream fin = new FileInputStream(fileName);
    int length = fin.available();
    byte [] buffer = new byte[length];
    fin.read(buffer);
    res = EncodingUtils.getString(buffer, "UTF-8");
    fin.close();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    return res;
    }


以上内容部分参考网络上的博文,附带上一个小demo。

http://download.csdn.net/detail/stop_pig/7896851

相关热词搜索: 文件