Java为我们提供了一套完备的IO流系统,方便我们访问和存储文件,这种方式在Android上依旧可以使用。关于Java的IO流系统,这里就不多做介绍了。
Android系统不仅支持标准Java的IO类和仿法,还提供了能够简化读写流式文件过程的函数,主要来介绍下面这两个函数:
openFileOutput()
openFileInput()
(1)public FileOutputStream openFileOutput (String name, int mode)创建和写入文件
打开应用程序的数据文件夹下对应name文件的输出流。利用Java的方式写入文件。
如果指定的文件存在,直接打开文件准备写入数据。
如果指定的文件不存在,则创建一个仅能够被自己访问的私有文件。文件默认保存在Android系统的/data/data/<package name>/file目录中。
mode参数指定打开文件的模式,有如下的值可选:
MODE_PRIVATE :私有模式,文件仅能够被创建文件的程序访问。
MODE_APPEND :追加模式,如文件已存在,则在文件的结尾处添加新数据。
MODE_WORLD_READABLE :全局读模式,允许任何程序读取私有文件。
MODE_WORLD_WRITEABLE :全局写模式,允许任何程序写⼊私有文件。
write() :将数据写入文件。
flush() :将缓冲中的数据写入文件。
close() :关闭FileOutputStream。
(2)public FileInputStream openFileInput (String name) 读取文件
打开应用程序的数据文件夹下对应name文件的输入流。读取文件的方式与Java读取文件的方式相同。
(3)除了这主要的两个元素,context还提供了如下的方法供我们访问文件:
getDir(String name, int mode):获取或创建name对应的子目录。
File getFilesDir():获取数据文件夹的绝对路径。
String[] fileList():返回数据文件夹下的全部文件。
deleteFile(String name):删除指定文件。
(4)读取SD卡上的文件
为了读取SD卡上的文件,我们需要在AndroidManifest.xml中添加读写SD卡的权限:
<!--在SD卡中创建和删除文件的权限-->
<user-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS”/>
<!--向SD卡写入数据的权限-->
<user-permission android:name=”android.permission.WRITE_EXTERANL_STORAGE”/>
读取SD卡上文件的步骤如下:
1.调用Environment的getExternalStorageState()方法判断手机是否有SD卡,应用程序是否具有读写SD卡的权限,如Environment.getExternalStorageState(Environment.MEDIA_MOUNTED)。
2.调用Environment的getExternalStorageDirectory()方法来获取SD卡的目录。
3.使用FileInputStream、FileOutputStream、FileReader获FileWriter读写SD卡上的文件。