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(),返回外部存储根目录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值