
上QQ阅读APP看书,第一时间看更新
5.1 文件流
在讲Android的数据库框架前,先需要一定篇幅来讲解一下Java文件流,因为在实际开发中,开发者会经常跟文件流数据打交道,也就是对文件流数据进行存储读取。
Java文件流分两类,字节流和字符流,如图5.1所示。

图5.1 Java文件流
字节流,以字节方式在文件中读取数据或者向文件中写入数据;字符流,则以字符形式读写文件。可以看到在字节流中有两个缓冲流:BufferedInputStream和BufferedOutputStream。BufferedInputStream是带有缓存区的,每次读取会首先从缓冲区读取数据,如果缓存区没有数据,则从文件读取数据,然后把读取到的数据放入缓存区中进行缓存,以供下次读取时使用;如果缓存区有数据,则直接把缓存区的数据返回给调用者。因为从缓存区读取数据比从文件读取数据要快,所以使用BufferedInputStream会提高I/O操作效率。同理,BufferedOutputStream是写入缓冲流,把缓冲区的数据写进到文件中去,这样比仅仅使用FileOutputStream一字节一字节写要快得多,所以使用BufferedOutputStream效率就会高很多。
Java的流操作如下:
1)创建文件对象:

2)使用字节流或字符流:

3)可以使用缓冲流继续装载:

4)读写操作:

而Android中的文件存储与Java的文件流操作类似,读取文件数据的代码如下:

同样,如果要将一些数据写进到上文的相应文件里,可以使用下面的代码来实现:
