\
这是我的一些理解: 最基本的-->现在智能手机看似不让你外置内存卡(SD卡),它只是为了赚取利润,手机内部其实还是分内部存储和外部存储的(SD卡厂商自己焊接在里面),
文章中所讲的内部存储其实就是手机自带的内存,(如果你不理解内存和SD卡区别,自行百度),外部存储就是SD卡
下面的文字是对上图的一些解释,如果对于存储位置不太清楚,看上图就行
首先android 的文件存储有两大类(API),第一个是Context类(主要是内部存储),第二个是Environment类 (主要是外部存储)
cache与files的差别在于,如果手机的内部存储控件不够了,会自行选择cache目录进行删除,因此,不要把重要的文件放在cache文件里面,可以放置在files里面,因为这个文件只有在APP被卸载的时候才会被删除,context类获得的file,当app被删除的时候,它也会被删除(包括context.getExternal...),Environment产生的file,不会被删除
----------------------------------
内部存储----START
------
-------------------------------------------->
当是Context类的时候,它是存储在内存里面 比如说 : this.getFilesDir() 以及 getCashFile() (不允许其他程序访问) (获得 root 权限就可以看到存储的位置)
它存储的都是位于
data/data/包名/files或者cash里面,它是不允许外部程序访问的,一般存储都不要在这里存储,另外
,SharedPreferences也处在内部存储,不允许其它程序访问,当你删除应用的时候,系统会删除这些文件夹
SQlite数据库的存储位置也是在这里---> data/data/包名/databases 目录中
注意 : 如果是 context.getExternal...这样的,它的位置应该都是在SD卡即在外部存储中
----------------------------------内部存储----END-------------------------------------------------->
-----------------------外部存储(其位置就在sd卡根目录)-----START---------------------------->
当它是Environment类的时候,它存储的位置是下图所示 ,
分为两种情况 : (允许任意程序访问) ,你可以测试,不要忘记添加权限.
其一是 : 共有的 Environment.getExternalStoragePublicDirectory(); -----> 如果卸载app,无法卸载该类的文件夹
这一类比如说,出厂设置的程序,录音,视频,音乐,以及图片,其它程序都可以访问
第二种情况是 Environment.getExternalFilesDir(),----->卸载app,外部存储数据不会被删除,你可以自己去实现删除效果
这是B程序的读取流程, 文件写入,或者说读取的位置就是在外部存储的根目录下面
private void readFile(Context context) {
try {
File file = new File(Environment.getExternalStorageDirectory(), "a.txt");
FileInputStream fileInputStream = new FileInputStream(file);
/* int b;
while ((b = fileInputStream.read()) != -1) {
Log.e("读取结果是:;;;", (char)b + "");
}*/
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
String result;
while ((result = reader.readLine()) != null) {
Log.e("读取的结果是;;;;", result);
}
reader.close();
Toast.makeText(context, "B读取成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "B读取失败", Toast.LENGTH_SHORT).show();
}
}
-------------------------------------END----------------------------------------------->