Android手机中常见的路径

Android 常见的存储文件路径的作用及获取方式(一)

  1. 内存储
    1.1 内部存储
    内部存储不是指的内存,而是指的是手机根目录的下data/data文件夹,除非root后的手机,否者用户没有权限去观看这个目录下的文件。
    内部存储保存的文件会随着app地卸载而删除。
    1.2 内部存储的几个主要的文件
    • cache app安装后,就会自动生成的文件,存放app的一些缓存文件
    • database 存放app创建的数据库相关的文件
    • files 存放普通的文件。
    • share_prefs 存放SharedPreferences设置的key-value文件的相关的数据
  2. 外存储
    2.1 外存储
    外部存储有两种,一种是手机额外挂载的tf卡,一种是手机出厂的时候,已经嵌入到主板的那种存储卡。在手机上看到Storage/emulated 就是外存储。
    2.2 外存储的组成
    • 外存储的私有目录
      路径:/storage/emulated/0/Android/data/包名/

    • 外存储的共有目录
      路径:/storage/emulated/0/xx/ 。其中xx是以下几种 :Alarms、DCIM、Download、Movies、Music、Notifications、Picture、Podcast、Ringtones.

3.路径的获取
其实路径可以分为两大类

  • 带包名的路径
    带包名的路径和某个app相关,这类路径的获取我们需要使用Context方法。
路径获取方法api版本
/data/data/com.example.filepathdemo/filesthis.getFilesDir().getAbsolutePath()内部私有
/data/data/com.example.filepathdemo/cachethis.getCacheDir().getAbsolutePath()内部私有
/storage/sdcard/Android/data/com.example.filepathdemo/cachethis.getExternalCacheDir().getAbsolutePath()外部私有
/storage/sdcard/Android/data/com.example.filepathdemo/files/Picturesthis.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath()外部私有

files下包含多种类型的文件,Environment.DIRECTORY_PICTURES只是其中之一,还有如Environment.DIRECTORY_MUSIC,Environment.DIRECTORY_DOWNLOADS等

  • 不带包名的路径

    由Environment类进行获取相关的数据。

路径获取方法api版本
/storage/sdcard/PicturesEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()外部公有

共有目录下,系统会自动生成多种类型的文件夹。它们是:

  • Alarms
  • DCIM
  • Download
  • Movies
  • Music
  • Notifications
  • Pictures
  • Podcasts
  • Ringtones

建议:尽量不要将大量的数据写入内部存储中。应用私有的数据尽量的写进私有目录中,一则他们可以随着app的卸载而删除,二来更安全一些。对于一些多媒体文件,如果不要求随着app的卸载而删除,建议将这些多媒体文件,按照类型存储到外部存储的相应的公共目录下。

4.其他

  • mnt/sdcard和sdcard的区别?

    sdcard其实就是一个mnt/sdcard的的一个快捷方式,就类似与window的桌面的快捷方法,它指向mnt/sdcard目录,所以两者的内容是相同的。


5.创建文件

  • 在内存储的私有目录中创建文件,路径如下data/data/包名/files/zwk/Mytxt.txt.
File innerFile = new File(this.getFilesDir(), "zwk"); // 在内存储中新new一个'zwk'的文件夹对象
				if (!innerFile.exists()) { // 判断文件夹是否存在
					innerFile.mkdirs(); // 创建文件夹
				}
				File textFile = new File(this.getFilesDir() + File.separator + "zwk", "MyTxt.txt"); //在zwk文件夹下创建txt文件对象
				if (!textFile.exists()) { // 判断MyTxt文件是否存在
					try {
						textFile.createNewFile(); // 不存在就创建一个新的
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				FileOutputStream fileOutputStream = null;
				try {
					fileOutputStream=new FileOutputStream(textFile); // 获取MyTxt.txt文件输出流
					fileOutputStream.write("测试数据".getBytes()); // 向MyTxt.txt内部写入数据
					fileOutputStream.flush();
					fileOutputStream.close();
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}finally {
					if (fileOutputStream!=null){
						try {
							fileOutputStream.flush();
							fileOutputStream.close();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值