一.内部存储和外部存储
1.几个错误的理解:
1.1外部存储就是外置SD卡,内部存储就是手机内的容量。
1.2Environment.getexternalstoragedirectory()取得的是SD卡的存储路径
2.不同Android版本下的外部存储和内部存储
2.1内部存储
2.2外部存储
二.内部存储和外部存储的操作
1.内部存储的操作
内部存储一般用Context来操作,getFileDir()获得应用的内部存储地址,android来提供了openFileOut()来读写在内部存储空间上的文件
1.1写入一个文件
String mFileName = "testfile";
String mFileThings = "Hello Android!";
FileOutputStream outputStream;
try{
outputStream = openFileOutput(mFileName, Context.MODE_PRIVATE);
outputStream.write(mFileThings.getBytes());
outputStream.close();
} catch(Exception e) {
e.printStackTrace();
}
1.2列出所有已经创建的文件
String[] files = Context.fileList();
for (String file:files) {
Log.i("the file is ","....file" );
}
1.3删除文件,只需要提供文件名即可
if(Context.deleteFile(fileName)) {
Log.i("删除文件成功", ".......");
} else {
Log.i("删除文件是被", "........");
}
1.4创建一个目录,需要传入目录名称,放回一个文件队对象用到的操作路径
FilefileDir = Context.getDir(dirName, Context.MODE_PRIVATE);
Log.i("绝对路径为", fileDir.getAbsolutePath());
1.5内部存储操作总结
文件操作只需要向函数提供文件名,所以程序自己只需要维护文件名即可;
不用自己去创建文件对象和输入、输出流,提供文件名就可以返回File对象或输入输出流
对于路径操作返回的都是文件对象。
2.外部存储的操作
2.1 概述
2.2 公共文件 /android/data/<包名>/files
2.3 私有文件 /android/data/<包名>/cache
文件由于位于外部存储所以任意应用都可以改变,但是对于其他应用而言都是没有任何意义的。在应用被卸载时,私有文件也会被删除,类似与内部存储文件。可以使用创建应用私有文件的方法是Context.getExternalFilesDir(),但是如果你的API低于8时,只能够使用Environment.getExternalStorageDirectory(),返回外部存储根目录。