Android存储理解和操作

一.内部存储和外部存储

1.几个错误的理解:

1.1外部存储就是外置SD卡,内部存储就是手机内的容量。

外置存储是外部存储但不是所有的存储,在后续的Android版本中,手机自带的存储空间越来越大,所以也分为的内部存储和外部存储。

1.2Environment.getexternalstoragedirectory()取得的是SD卡的存储路径

Environment.getexternalstoragedirectory()取得是外部存储的路径

2.不同Android版本下的外部存储和内部存储

2.1内部存储

内部存储不是内存,内部存储位于系统中很特殊的一个位置,文件存储于内部存储中时,文件默认只能被你的应用访问到,而且一个应用创建的所有文件都在和应用包 名一样的目录中(即应用创建位于内部存储的文件与应用是关联起来的,一旦应用卸载,相应的文件也要被删除  默认地址/data/data/<包名>)

2.2外部存储

所有的安卓设备都有外部存储和内部存储,特别是后来手机内部的存储器容量8GB以上时,将存储器分为“内部internal”和“外部external”两部分,其实都在手机内部,所 以不管手机是否有课移动的SDCard,他们都有内部存储和外部存储。SDCard都是外部存储。最简单的分辨的理解,能被电脑识别的都是外部存储。

二.内部存储和外部存储的操作

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


文件可以被自由访问,而且数据对其他应用或者用户而言都是有意义,当应用被卸载以后,其卸载前的数据依然保留。可以使用getExternalStorgePublicDirectory()
但是如果你的API低于8时,只能够使用Environment.getExternalStorageDirectory(),返回外部存储根目录。

2.3 私有文件 /android/data/<包名>/cache

文件由于位于外部存储所以任意应用都可以改变,但是对于其他应用而言都是没有任何意义的。在应用被卸载时,私有文件也会被删除,类似与内部存储文件。可以使用创建应用私有文件的方法是Context.getExternalFilesDir(),但是如果你的API低于8时,只能够使用Environment.getExternalStorageDirectory(),返回外部存储根目录。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值