本文共 2889 字,大约阅读时间需要 9 分钟。
一般使用SharedPreferences方式存储的内容是一些键值对(key-value),使用SQLite数据库来操作存储数据表,而有时候我们却要存储的是一些文件,这时候我们可以采用文件存储的方式。
Java提供了一套完整的IO流体系,用来对文件进行操作。Android同样支持以这种方式来访问手机存储器上的文件,包括内部存储器和外部存储器(即SD卡)优点:可以处理大量数据
缺点:当文件更新或者格式改变会造成大量的编程工作1、将文件存储在应用程序内,在Android系统中,这些文件保存在**/data/data//files/目录下,称为File存储,默认情况下,文件是不能在不同应用程序间共享的,当该应用程序卸载时,这些文件将被删掉; 2、将文件存储在外接的存储设备中,也就是存储在SDCard**存储卡中,称为SDCard存储。
利用Context或者Activity中的openFileInput()方法与FileInputStream对象来读取设备上的文件;
利用Context或者Activity中的openFileOutput()方法与FileOutputStream对象来创建设备上的文件;context是个抽象类,而Activity、Service、Application都是其子
保存文件内容,打开指定的私有文件输出流,参数 name为要打开的文件名,不能包含路径分隔符,参数mode为操作模式,有以下保存模式:
openFileOutput(“jay123.txt”, Context.MODE_PRIVATE+Context.MODE_WORLD_READABLE)。
读取文件内容,打开指定的私有文件输出流,name为要打开的文件名,不能包含路径分隔符。
删除指定的文件,name为要删除的文件名,不能包含路径分隔符。
在应用程序的数据文件下获取或创建name对应的子目录。
得到该应用程序数据文件夹的绝对路径。
得到该应用程序数据文件夹下的全部文件的文件名。
如果想存储的是视频、音乐等需要占用大量存储空间的文件,那么存储到手机内存中显得很不明智,所以我们会将这些大文件数据存储到SD卡中。
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
Environment.getExternalStorageDirectory().getCanonicalPath()+"/"+fileName
以下方法都是static的,可以直接用Environment类名调用。
static File getDataDirectory() 获得Android下的data文件夹的目录。 static File getDownloadCacheDirectory() 获得AndroidDownload/Cache内容的目录。 static File getExternalStorageDirectory() 获得Android外部存储器也就是SDCard的目录。 static File getRootDirectory() 获得Android下的root文件夹的目录。 getAbsolutePath() 表示获取当前文件的绝对路径+相对路径如果构造的时候是全路径就直接返回全路如果构造时是相对路径,就返回当前目录的路径 + 构造 File 对象时的路径getCanonicalPath():表示获取当前文件的绝对路径,会把 ..\ 、.\ 这样的符号解析掉例如:D:\workspace\Test\TestWeb\src\..\a.txtD:\workspace\Test\TestWeb\a.txtstatic String getExternalStorageState() 获得Android外部存储器的当前状态,有以下保存模式: Environment.MEDIA_BAD_REMOVAL:在没有正确卸载SDCard之前就移除了。 Environment.MEDIA_CHECKING:正在磁盘检查。 Environment.MEDIA_MOUNTED:已经挂载并且拥有可读可写权限。 Environment.MEDIA_MOUNTED_READ_ONLY:已经挂载, 但只拥有可读权限。 Environment.MEDIA_NOFS:对象空白, 或者文件系统不支持。 Environment.MEDIA_REMOVED:已经移除扩展设备。 Environment.MEDIA_SHARED:如果SDCard未挂载, 同时通过USB大容量存储方式与其他设备共享。 Environment.MEDIA_UNMOUNTABLE:不可以挂载任何扩展设备。 Environment.MEDIA_UNMOUNTED:已经卸载。
转载地址:http://uhvef.baihongyu.com/