前言
Linus Benedict Torvalds : RTFSC – Read The Funning Source Code
概述
Android 作为基于 Linux 的系统,所以文件的操作也继承于 Linux 那一套。文件的读写可以分为这么几个,对文件进行读、写操作 :FileReader、FileWriter、FileInputStream、FileOutputStream 总共包括四大操作方式。
- 数据区的读写:存放在数据区(/data/data/..)的文件只能使用openFileOutput和openFileInput进行操作。注意这里不能使用FileInputStream和FileOutputStream进行文件的操作。
- SD的读写:SD卡中的文件使用FileInputStream和FileOutputStream进行文件的操作。
数据区的读写
默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载您的应用时,这些文件也会被移除。
写入操作
- 使用文件名称和操作模式调用 openFileOutput()。这将返回一个 FileOutputStream。
- 使用 write() 写入到文件。
- 使用 close() 关闭流式传输。
操作模式:
- MODE_PRIVATE:默认模式,只能在应用内使用。
- MODE_APPEND:如果文件存在则会从文件的尾端开始写入。
|
|
读取操作
- 调用 openFileInput() 并向其传递要读取的文件名称。这将返回一个 FileInputStream。
- 使用 read() 读取文件字节。
- 然后使用 close() 关闭流式传输。
|
|
外部存储读写
首先要获取到读取和写入外部存储的权限:
如果存在SDCard并且想要访问里面的资源则首先要判断是否存在SDCard。Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
Stream 写入操作
|
|
Stream 读取操作
|
|
File 写入操作
|
|
File 读取操作
|
|
File 功能
|
|
RandomAccessFile
随机访问类一般可以用RandomAccessFile 来实现文件的随机访问。它可以用seek()方法来访问文件,并进行读写。RandomAccessFile是不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它甚至都没有用InputStream和OutputStream已经准备好的功能,它是一个完全独立的类。
RandomAccessFile的绝大多数功能,已经被JDK1.4的nio的“内存映射文件(memory-mapped files)”给取代了。
getFilePointer ()
返回当前的移动的地标。
seek (long offset)
设置当前文件的移动标志,确定读取文件的起点。如果设置的长度大于文件长度,文件长度也不会被改变。
write (byte[] b, int off, int len)
把指定的字节数组
b
从当前off
标志处写入len
个字节。
write (byte[] b)
把指定的字节数组
b
字节从当前文件指针处开始写入到此文件。
read (byte[] b, int off, int len)
从
off
游标处读取len
的字节到字节组b
里面。这个方法会一直阻塞直到字节读完。
read (byte[] b)
读取字节到字节组
b
里面。这个方法会一直阻塞直到字节读完。