内部存储 Internal storage
- 特点
1.文件只能被当前应用程序访问,其他应用程序不能访问
2.当应用程序卸载后,程序在内部存储的文件也会被删除 - 路径
data/data/应用程序包名/files/文件名.后缀名 - 存入数据步骤
1.打开内部文件存储的输出流(第一个参数文件名称,第二个参数:文件的操作模式)
FileOutputStream fos = openFileOutput(fileName,Context.MODE_PRIVATE);
2.写入数据
fos.write(contant.getBytes());
3.关闭流
fos.close(); - 读取数据步骤
1.打开内部存储文件的输入流
FileInputStream fis = openFileInput(fileName);
2.读取数据
byte[] buffer = new byte[fis.available()]//fis.available()返回的实际可读字节数,也就是总大小
fis.read(buffer);
3.关闭流
fis.close(); - 内部存储常用的方法
String[] filelist()//得到内部存储中所有文件的名称
deleteFile(fileName)//删除指定的文件
File getFileDir()//得到应用程序数据文件的绝对路径
外部存储(SD卡)External Storage
- 特点
1.需插入sd卡
2.分为两部分:sd的公共目录,sd的私有目录
3.公共目录下的文件可以被应用程序共享,私有目录下的文件只能被当前应用程序访问
4.当程序卸载后,公共目录下的文件不会被清除,私有目录的下的文化会被清除 - 目录
mnt/sdcard 4.0版本之前的目录
storage/sdcard 4.0后的目录 公共目录
storage/sdcard/Android/data/应用程序包名/... 私有目录 - 读写SD卡的权限
WRITE_EXTERNAL_STORAGE 写sd卡的权限
READ_EXTERNAL_STOAGE 读sd卡的权限 - 获取扩展卡的根目录
Environment.getExternalStorageDirectory() - 获取当前扩展卡的状态
Environment.getExternalStorageState()
MEDIA_MOUNTED 挂载的状态,sd卡已经被装载并切可以使用,判断存储的状态符合该条件,则进行存取 - 目录
context.getExternalFilesDir(null) 私有目录的根目录
context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOAD) 私有目录中的download目录中
context.getExternalCacheDir() 私有目录中的缓存目录
Environment.getExternalStorageDirectory() sd卡的根目录Environment.getExternalStorageDirectory(Environment.DIRECTORY_DOWNLOAD)公共目录中的download目录中