Android的数据存储操作—FileOutputStream和FileInputStream的学习

来源:互联网 发布:上海 网络信息安全员证 编辑:程序博客网 时间:2024/06/15 21:02

Android的数据存储操作—FileOutputStream和FileInputStream的学习


FileInputStream(& FileOutputStream):

类继承关系:      java.lang.Object  —>  java.io.InputStream  (& java.io.OutputStream)     

                                                             —>java.io.FileInputStream(& FileOutputStream)。

FileInputStream 用于顺序的访问本地文件,用来读取图像数据之类的原始字节流。继承了超类InputStream的   read()方法、close()等方法。创建FileInputStream对象时,我们所指定的文件必须是可见和可读的,创建FileInputStream对象的方法分为以下两种:

第一种:FileInputStream  inStream=new FileInputStream("文件名");

第二种:File file=new  File("文件名");

            FileInputStream  inStream=new FileInputStream(file);

我们在Android数据存储操作中xxxActivity.java 文件中创建FileInputStrem对象并指定所操作的文件(当前应用程序的私有文件)的方法:

FileInputStream  inStream =xxxActivity.this.openFileInput("文件名");

FileInputStream重写了抽象类InputStream的数据读取方法:介绍一下经常使用到的两种:

第一个:public   int  read(byte[ ] byte);//从此输入流将   b.length  个字节读取存入到一个byte[ ]数组当中,读取完毕时返回的数值是-1。

第二个:public  int  read(byte[ ]  b , int  off , int  len);  //从此输入流中将最多  b.length 个字节读取到一个byte[ ]数组当中,读取完毕时会返回 -1;

临时补充:我们在程序中同样也使用到了ByteArrayOutputStream这个类,我们在创建这个类的实例时,程序内部创建了一个byte型的数组的缓冲区,然后利用这个实例向数组写入byte型的数据。在网络传输中我们可能需要传输很多变量,我们可以利用ByteArrayOutputStream实例将所有的变量收集起来,然后一次性传送出去。

ByteArrayOutputStream 捕获内存缓存中的数据,然后可以将其转换成字节数组或者是字符型,然而ByteArrayOutputStream 可以将字符型或者是字节数组转化为输入流。

FileOutputStream  用于像一个文件写入数据,用于写入诸如图像数据之类的原始字节流。从超类继承write()、 close()等方法。

常用的构造方法:

FileOutputStream(String FilePath)  //参数(文件全称路径)

FileOutputStream(File  FileObject)  //参数(描述该文件的对象)

这两种方法和FileInputStream中的这两个方法用法是一样的。

FileOutputStream(String fileath,booleam append) //参数(文件路径和文件的写入方式如果为真则说明文件以尾部追加的方式写入,当为假时则写入的文件覆盖之前的内容)//--------true时,不会清楚原有数据。False时会新建文件

FileOutputStream(File  fileObject,boolean append)

FileOutputStream的创建并不依据文件是否存在,如果文件不存在,再打开FileOutputStream时会自动创建文件。

最后再补充一个小知识点:openFileOutput("文件名",操作模式)  操作模式有以下几种:

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

如果希望文件被其他应用读和写,可以传入: openFileOutput("文件名", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

0 0
原创粉丝点击