Android外部存储/内部存储路径获取大全



  1. package com.mufeng.toolproject.utils;
  2. import android.content.Context;
  3. import android.os.Environment;
  4. /**
  5. * Created by mufeng on 2017/3/11.
  6. */
  7. public class DirectoryUtils {
  8. private static final String TAG = "DirectoryUtils";
  9. public static void getEnvironmentDirectories() {
  10. //:/system
  11. String rootDir = Environment.getRootDirectory().toString();
  12. System.out.println( "Environment.getRootDirectory()=:" + rootDir);
  13. //:/data 用户数据目录
  14. String dataDir = Environment.getDataDirectory().toString();
  15. System.out.println( "Environment.getDataDirectory()=:" + dataDir);
  16. //:/cache 下载缓存内容目录
  17. String cacheDir = Environment.getDownloadCacheDirectory().toString();
  18. System.out.println( "Environment.getDownloadCacheDirectory()=:" + cacheDir);
  19. //:/mnt/sdcard或者/storage/emulated/0或者/storage/sdcard0 主要的外部存储目录
  1. // 这个不一定是外部存储
  2. String storageDir = Environment.getExternalStorageDirectory().toString();
  3. System.out.println( "Environment.getExternalStorageDirectory()=:" + storageDir);
  4. //:/mnt/sdcard/Pictures或者/storage/emulated/0/Pictures或者/storage/sdcard0/Pictures
  5. String publicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
  6. System.out.println( "Environment.getExternalStoragePublicDirectory()=:" + publicDir);
  7. //获取SD卡是否存在:mounted
  8. String storageState = Environment.getExternalStorageState().toLowerCase();
  9. System.out.println( "Environment.getExternalStorageState()=:" + storageState);
  10. //设备的外存是否是用内存模拟的,是则返回true。(API Level 11)
  11. boolean isEmulated = Environment.isExternalStorageEmulated();
  12. System.out.println( "Environment.isExternalStorageEmulated()=:" + isEmulated);
  13. //设备的外存是否是可以拆卸的,比如SD卡,是则返回true。(API Level 9)
  14. boolean isRemovable = Environment.isExternalStorageRemovable();
  15. System.out.println( "Environment.isExternalStorageRemovable()= :" + isRemovable);
  16. }
  17. public static void getApplicationDirectories(Context context) {
  18. //获取当前程序路径 应用在内存上的目录 :/data/data/com.mufeng.toolproject/files
  19. String filesDir = context.getFilesDir().toString();
  20. System.out.println( "context.getFilesDir()=:" + filesDir);
  21. //应用的在内存上的缓存目录 :/data/data/com.mufeng.toolproject/cache
  22. String cacheDir = context.getCacheDir().toString();
  23. System.out.println( "context.getCacheDir()=:" + cacheDir);
  24. //应用在外部存储上的目录 :/storage/emulated/0/Android/data/com.mufeng.toolproject/files/Movies
  25. String externalFilesDir = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES).toString();
  26. System.out.println( "context.getExternalFilesDir()=:" + externalFilesDir);
  27. //应用的在外部存储上的缓存目录 :/storage/emulated/0/Android/data/com.mufeng.toolproject/cache
  28. String externalCacheDir = context.getExternalCacheDir().toString();
  29. System.out.println( "context.getExternalCacheDir()=:" + externalCacheDir);
  30. //获取该程序的安装包路径 :/data/app/com.mufeng.toolproject-3.apk
  31. String packageResourcePath = context.getPackageResourcePath();
  32. System.out.println( "context.getPackageResourcePath()=:" + packageResourcePath);
  33. //获取程序默认数据库路径 :/data/data/com.mufeng.toolproject/databases/mufeng
  34. String databasePat = context.getDatabasePath( "mufeng").toString();
  35. System.out.println( "context.getDatabasePath(\"mufeng\")=:" + databasePat);
  36. }
  37. }
Android内部路径外部存储路径的区别在于其访问权限和存储位置。 Android内部路径是指应用程序在设备的内部存储空间中创建的路径。这个路径只能被应用程序本身访问,其他应用程序、用户或系统都无法直接访问。内部路径通常用于存储应用程序的私密数据,如缓存文件、数据库文件等。由于内部路径只能被应用程序访问,所以应用程序对其具有读写权限,并且可以在应用程序卸载时将内部路径下的数据一并删除。 而外部存储路径则是指设备上的可移动存储介质,如SD卡。这个路径是被所有应用程序以及使用设备的用户和系统共享的,因此外部存储路径的数据可以被多个应用程序共享和访问。外部存储路径通常用于存储大量的公共数据,如音频、视频、图片等。由于外部存储路径是共享的,所以应用程序对其只具有读写权限,并且应用程序卸载时不会删除外部存储路径下的数据。 需要注意的是,由于外部存储路径是被所有应用程序共享的,所以访问外部存储路径需要申请相关的权限,并且需要注意防止数据被其他应用程序非法访问或篡改。在使用外部存储路径时,还需要进行容量检测,以确保设备上有足够的可用存储空间。 综上所述,Android内部路径外部存储路径在访问权限、存储位置和数据共享等方面存在区别。根据应用程序的需求和数据的性质,开发者可以选择合适的路径存储和管理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值