数据存储(二) 文件存储

一、常用File操作

getName();//获得文件或文件夹的名称

getParent();//获得文件或文件夹的父目录

getAbsoultePath();//绝对路经

getPath();//相对路经

createNewFile();//建立文件

mkDir(); mkDirs();//建立文件夹

isDirectory();//判断是文件或文件夹

File.listFiles();//列出文件夹下的所有文件和文件夹

renameTo(newFile);//修改文件夹和文件名

delete();//删除文件夹或文件


二、内部存储

       内部存储路径为/data/data/youPackageName/,所有内部存储中保存的文件在用户卸载应用的时候会被删除。主要包括以下目录:/cache、/files、/shared_prefs、/databases。

(一)存储路径

1、/data/data/包名/files

      一般放一些长时间保存的数据,  [设置 - 应用 - 应用详情 - "清除数据"]

context.getFilesDir().getAbsolutePath()

2、/data/data/包名/cache

       一般存放临时缓存数据  [设置 - 应用 - 应用详情 - "清除缓存"]

context.getCacheDir().getAbsolutePath()

(二)文件读写

1、Java方式

读取 new FileInputStream(String filePath)

写入 new FileOutputStream(String filePath)

        new FileOutputStream(String filePath, true) //在文件尾部写

2、Activity方式

读取 this.openFileInput(filePath);

写入 this.openFileOutput(filePath, Context.MODE_APPEND);


外部存储

        主要是SDCard存储。由于系统分配给应用的内部存储空间有限,对于大数据的存储,建议使用外部存。

(一)存储路径

        外部存储分为共有目录和私有目录。

1、共有目录(Environment)

1)根目录

Environment.getExternalStorgeDirectory()

2)/data目录

Environment.getDataDirectory()

3)/cache目录

Environment.getDownloadCacheDirectory()

4)七大子目录

Environment.getExternalStoragePublicDirectory(String  type)

类型有

Environment.DIRECTORY_ALARMS  //警报的铃声

Environment.DIRECTORY_DCIM  //相机拍摄的图片和视频保存的位置

Environment.DIRECTORY_DOWNLOADS  //下载文件保存的位置

Environment.DIRECTORY_MOVIES  //电影保存的位置, 比如 通过google play下载的电影

Environment.DIRECTORY_MUSIC  //音乐保存的位置

Environment.DIRECTORY_NOTIFICATIONS  //通知音保存的位置

Environment.DIRECTORY_PICTURES  //下载的图片保存的位置

Environment.DIRECTORY_PODCASTS  //用于保存podcast(博客)的音频文件

Environment.DIRECTORY_RINGTONES  //保存铃声的位置

2、私有目录(Context)

1) SDCard/Android/data/应用包名/cache/

context.getExternalCacheDir()

2) SDCard/Android/data/应用的包名/files/目录

context.getExternalFilesDir(String  type)

类型同共有目录

(二)访问权限

1、读权限

android.permission.READ_EXTERNAL_STORAGE

2、写权限

android.permission.READ_EXTERNAL_STORAGE


(三)判断SDCard状态

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

状态只有:

          Environment.MEDIA_MOUNTED //SDCard可读写

          Environment.MEDIA_MOUNTED_READ_ONLY //SDCard只读

          Environment.MEDIA_SHARED //SDCard正在通过USB共享


【案例】

http://pan.baidu.com/s/1mhWuCa8 

http://pan.baidu.com/s/1gfiakW7 


【习题】

1、封装File操作的工具类

2、判断SDCard中是否有指定图片,如果有指定图片,直接从SDCard中加载图片。如果没有从网络下载图片,保存到SDCard中,然后再加载到界面上。

你可能感兴趣的:(数据存储(二) 文件存储)