获取Android应用专属缓存存储目录

全面掌握Android应用存储信息的获取方法 Android权限分为普通权限、危险权限和特殊权限。普通权限不影响用户隐私,如网络访问权限;危险权限涉及用户隐私,如联系人读取权限;特殊权限则涉及设备重要功能,如修改系统设置。 阅读详情

获取Android应用专属缓存存储目录

如果你想摆脱缓存目录使用的尴尬:找不到目录?忘记申请读写权限?害怕污染用户存储空间?……请往下看

SD卡缓存目录

当应用需要将图片或者文件缓存到SD卡中时要去申请创建目录,有下面几种途径
我们可以通过API调用应用专属目录:

// /storage/emulated/0/Android/data/app_package_name/files/Pictures
Content.getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
// /storage/emulated/0/Android/data/app_package_name/cache
Content.getExternalCacheDir(); 

上面两个目录是专属于当前app的,当应用被删除时,上面目录下的文件也会清空

内存缓存目录

相对于应用的专属SD卡缓存有两个内存缓存地址:

Content. getCacheDir(); //  /data/data/app_package_name/cache
Content. getFilesDir(); //  /data/data/app_package_name/files

这两个目录中的文件也会随着app的删除而清空

当系统版本大于等于4.4时,对通过上面4个API调用得到的目录进行文件的读写操作不需要申请SD卡的读写权限,所以6.0及以上系统使用时也不需要动态申请读写权限

使用注意事项

  1. 当存储比较大的文件时,如图片等文件存储在SD卡对应的目录下
  2. 应用的内存缓存目录只有应用本身能对其进行读写操作,外部应用不行,如相机应用 (内存目录读写权限:rwxr-x–x,SD卡缓存目录读写权限:rwxrwx—)
  3. 即使是通过自定义路径得到的上述目录,在系统版本大于等于4.4时也不需要申请SD卡读写权限

API使用及方法封装

/**
 * 获取应用专属缓存目录
 * android 4.4及以上系统不需要申请SD卡读写权限
 * 因此也不用考虑6.0系统动态申请SD卡读写权限问题,切随应用被卸载后自动清空 不会污染用户存储空间
 * @param context 上下文
 * @param type 文件夹类型 可以为空,为空则返回API得到的一级目录
 * @return 缓存文件夹 如果没有SD卡或SD卡有问题则返回内存缓存目录,否则优先返回SD卡缓存目录
 */
public static File getCacheDirectory(Context context,String type) {
    File appCacheDir = getExternalCacheDirectory(context,type);
    if (appCacheDir == null){
        appCacheDir = getInternalCacheDirectory(context,type);
    }

    if (appCacheDir == null){
        Log.e("getCacheDirectory","getCacheDirectory fail ,the reason is mobile phone unknown exception !");
    }else {
        if (!appCacheDir.exists()&&!appCacheDir.mkdirs()){
            Log.e("getCacheDirectory","getCacheDirectory fail ,the reason is make directory fail !");
        }
    }
    return appCacheDir;
}

/**
 * 获取SD卡缓存目录
 * @param context 上下文
 * @param type 文件夹类型 如果为空则返回 /storage/emulated/0/Android/data/app_package_name/cache
 *             否则返回对应类型的文件夹如Environment.DIRECTORY_PICTURES 对应的文件夹为 .../data/app_package_name/files/Pictures
 * {@link android.os.Environment#DIRECTORY_MUSIC},
 * {@link android.os.Environment#DIRECTORY_PODCASTS},
 * {@link android.os.Environment#DIRECTORY_RINGTONES},
 * {@link android.os.Environment#DIRECTORY_ALARMS},
 * {@link android.os.Environment#DIRECTORY_NOTIFICATIONS},
 * {@link android.os.Environment#DIRECTORY_PICTURES}, or
 * {@link android.os.Environment#DIRECTORY_MOVIES}.or 自定义文件夹名称
 * @return 缓存目录文件夹 或 null(无SD卡或SD卡挂载失败)
 */
public static File getExternalCacheDirectory(Context context,String type) {
    File appCacheDir = null;
    if( Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
        if (TextUtils.isEmpty(type)){
            appCacheDir = context.getExternalCacheDir();
        }else {
            appCacheDir = context.getExternalFilesDir(type);
        }

        if (appCacheDir == null){// 有些手机需要通过自定义目录
            appCacheDir = new File(Environment.getExternalStorageDirectory(),"Android/data/"+context.getPackageName()+"/cache/"+type);
        }

        if (appCacheDir == null){
            Log.e("getExternalDirectory","getExternalDirectory fail ,the reason is sdCard unknown exception !");
        }else {
            if (!appCacheDir.exists()&&!appCacheDir.mkdirs()){
                Log.e("getExternalDirectory","getExternalDirectory fail ,the reason is make directory fail !");
            }
        }
    }else {
        Log.e("getExternalDirectory","getExternalDirectory fail ,the reason is sdCard nonexistence or sdCard mount fail !");
    }
    return appCacheDir;
}

/**
 * 获取内存缓存目录
 * @param type 子目录,可以为空,为空直接返回一级目录
 * @return 缓存目录文件夹 或 null(创建目录文件失败)
 * 注:该方法获取的目录是能供当前应用自己使用,外部应用没有读写权限,如 系统相机应用
 */
public static File getInternalCacheDirectory(Context context,String type) {
    File appCacheDir = null;
    if (TextUtils.isEmpty(type)){
        appCacheDir = context.getCacheDir();// /data/data/app_package_name/cache
    }else {
        appCacheDir = new File(context.getFilesDir(),type);// /data/data/app_package_name/files/type
    }

    if (!appCacheDir.exists()&&!appCacheDir.mkdirs()){
        Log.e("getInternalDirectory","getInternalDirectory fail ,the reason is make directory fail !");
    }
    return appCacheDir;
}
24V供电D1047/B817对管AB类音频功放设计与制作全解析 音频功率放大器是电子系统将微弱音频信号放大驱动扬声器的核心电路,其核心原理是通过晶体管或集成电路对信号进行电压和电流放大。从技术价值看,优秀的功放设计需兼顾效率、保真度与稳定性,AB类放大器便是经典折中方案,它在A类低失真与B类高效率间取得平衡。在应用场景上,这类电路广泛应用于家用音响、多媒体音箱、车载音频及DIY音频项目。本文聚焦于一个采用24V直流供电、以D1047和B817互补对管为核心输出级的AB类功放实例,深入剖析其**电路设计**与**元件选型**,涵盖从BC547小信号放大、偏置设置、PCB布 阅读详情

相关推荐

kettle多表数据迁移

点击 文件——新建——作业,在左侧的 核心对象 标签下选择 通用,双击添加一个 start ,一个 转换 ,一个 作业 和一个 成功 到右侧的作业面板,这些作业项都可以改名字。点击文件—新建—转换,在左侧的 核心对象 标签下选择 输入 下的 表输入,双击添加到右侧的转换面板,再选择 作业 下的 复制记录到结果 ,双击添加到右侧的转换面板。新建转换,在左侧的 核心对象 标签下选择 作业 下的 从结果获取记录,双击添加到右侧的转换面板,再选择 作业 下的 设置变量 ,双击添加到右侧的转换面板。

u014061745的博客 1342

Android App的文件缓存目录

Android app的文件缓存目录可以是app内置私有的目录,当然也可以选择外置sdcard目录内置私有目录/data/data/[packagename]/files 文件缓存目录,一般存小的文件缓存,如果是图片,不建议放这里,一般放到外置卡。File file = getFilesDir();返回该目录 写文件到该目录下可以像这样FileOutputStream fos = null;

来啊 快活啊 1万+

华为IC岗笔试刷题含答案(2)

又做了几套题,记录了部分及答案,如有错误,欢迎评论指正。

Ingrid的博客 1万+

Android存储路径获取,getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的区别

存储介绍 Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足。一般我们存储内容都会放在外部存储空间里。使用过程注意事项: 1、先判断SD卡是否可用,可用时优先使用SD卡的存储,不可用时用内部存储 2、存储在SD卡上时,可以在SD卡上新建任意一个目录存放,也可以存放在应用程序内部文...

weixin_42046829的博客 4962

芒果YOLOv8改进52:主干Backbone篇之GhostNetV2:提出原创GhostNetV2 架构升级版:引入长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干,打造高效轻量级检测器

长距离注意力机制增强廉价操作,打造轻量级检测器

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1611

026:vue+threeJS 设置地面铺砖的效果

BoxGeometry 是 Three.js 中用于创建立方体或长方体的几何体类。它允许你指定立方体的宽度、高度、深度以及这三个方向上的分段数,从而控制立方体的细分程度。width: 立方体的宽度(沿 x 轴方向)。height: 立方体的高度(沿 y 轴方向)。depth: 立方体的深度(沿 z 轴方向)。widthSegments: 可选参数,指定立方体在 x 轴方向上的分段数,默认值为 1。heightSegments: 可选参数,指定立方体在 y 轴方向上的分段数,默认值为 1。

大剑师兰特的GIS世界 645

深入理解Android中的缓存与文件存储目录

本文将详细介绍`cacheDir`, `filesDir`, `externalCacheDir`, 以及`getExternalFilesDir(Environment.DIRECTORY_PICTURES)`这几个目录的用途和区别。

jiet_h的博客 3749

3.7 改造模型:为GPT添加一个分类头(Classification Head)

本文介绍如何改造GPT模型用于文本分类任务。主要内容包括: 分类头设计思路:GPT作为语言模型需要添加分类头才能适应分类任务,类似于为语言大师添加裁判功能。 序列表示选择策略: 分析三种常见方法(CLS标记、平均池化、最后词元表示) 推荐使用最后词元表示,因其最能反映GPT的单向信息流特性 代码实现: 构建GPT2ForSequenceClassification类 包含预训练GPT主体和线性分类头 使用attention_mask智能定位句子结尾 通过高级索引提取最后词元特征 该方法通过简单改造使GPT模

yonggeit的博客 2971

Android存储(读取)之缓存CachesDir存储

数据存储到缓存中:data/data/包名/caches/,储存在缓存里的文件,当内存不足时,会自动释放掉 也可以点击清除缓存来清除数据 // 把String保存到私有文件夹中:data/data/包名/files/ StoreUtils.storeStringToCachesDir(this, "cachesDir", "ha.txt"); //读取data/dat

Android_Study_OK的博客 1125

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目

本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5443

5.6华为OD机试真题 新系统 - 匹配命令行前缀关键字 (Java/Py/C/C++/Js/Go)

5.6华为OD机试真题 新系统 - 匹配命令行前缀关键字本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2128

android 应用专属目录,获取Android应用专属缓存存储目录的实例

如果你想摆脱缓存目录使用的尴尬:找不到目录?忘记申请读写权限?害怕污染用户存储空间?……请往下看SD卡缓存目录当应用需要将图片或者文件缓存到SD卡中时要去申请创建目录,有下面几种途径我们可以通过API调用应用专属目录:// /storage/emulated/0/Android/data/app_package_name/files/PicturesContent.getExternalFiles...

weixin_39861920的博客 459

ThingsBoard 场景联动需求

当初有个兄弟请我帮他实现一个需求,需求如上,很简单,实现完成后我怕他操作不来,又写了这份文档给他,今天把这个文档的场景发出来,大家也可以学习一下思路我把需要模拟设备的指令都总结在下面,连接参数截图讲解如下:温度传感器风扇光照传感器灯。

AldrichEugene 1233

找android应用目录,获取Android应用专属缓存存储目录的实例

如果你想摆脱缓存目录使用的尴尬:找不到目录?忘记申请读写权限?害怕污染用户存储空间?……请往下看SD卡缓存目录当应用需要将图片或者文件缓存到SD卡中时要去申请创建目录,有下面几种途径我们可以通过API调用应用专属目录:// /storage/emulated/0/Android/data/app_package_name/files/PicturesContent.getExternalFiles...

weixin_30106425的博客 1504

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android读写缓存文件路径,获取Android应用专属缓存存储目录的实例

如果你想摆脱缓存目录使用的尴尬:找不到目录?忘记申请读写权限?害怕污染用户存储空间?……请往下看SD卡缓存目录当应用需要将图片或者文件缓存到SD卡中时要去申请创建目录,有下面几种途径我们可以通过API调用应用专属目录:// /storage/emulated/0/Android/data/app_package_name/files/PicturesContent.getExternalFiles...

weixin_30396323的博客 1744

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 根目录大小,Android获取各种路径方法及获取指定文件大小

Android中有各种各样的数据,大体上包括两种获取路径的方式,一是通过Environment,二是通过Context。以下代码放在MainActivity.java中,即可打印出以下不同种类的路径。/*** 通过Environment获取*///获得根目录/data内部存储路径System.out.println("Environment.getDataDirectory(): " + Envi...

weixin_42116791的博客 932

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 手机内存uri_android 的各种目录详解

App独立文件app独立文件就是那些不依赖于某特定app的文件这类文件当我们删除应用之后,还应该保留在手机上的,例如拍照的照片,不应该随着删除应用而被删除掉。这类文件应该是随着app删除而一起删除的,它们可以被存储在两个地方:internal storage 和 external storage 。 internal storage就是手机自带的一块存储区域,通常很小;external stora...

weixin_29689845的博客 1110

Android使用的各种目录

//======== /** * //用户数据目录。/data */ String path1 = Environment.getDataDirectory().getPath(); /** * //下载缓存内容目录。/cache */ String path2 = Enviro

HIQ的博客 471

【错误记录】Android 分区存储下的 SD 卡应用专属外部存储空间目录访问 ( 需手动创建应用专属外部存储空间目录 )

手动创建应用专属外部存储空间目录

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1481

Android APP 数据存放目录

Android的每个应用程序,都有自己的可控的目录。 在Setting/Application info里面,可以看到每个应用程序,都有Clear data和Clear cache选项。 具体这些目录在哪里呢? 用adb连接上设备。如果是连接真实设备,需要有设备的root权限。 cd data/data 在这个目录下,可以看到每个应用程序都有自己的目录,目录名

YanWei-Rookie 的博客 4421

获取应用专属缓存目录

获取Android应用专属缓存存储目录 SD卡缓存目录 当应用需要将图片或者文件缓存到SD卡中时要去申请创建目录,有下面几种途径  我们可以通过API调用应用专属目录: // /storage/emulated/0/Android/data/app_package_name/files/Pictures Content.getExternalFilesDir(Environme

yusufolu9的专栏 1292

Android存储选择指南:应用专属目录 vs 媒体库目录

优先选择应用专属目录:适用于私有、临时和敏感数据使用MediaStore处理公共内容:用户生成的媒体和共享文件遵循Scoped Storage规则:特别是Android 10+设备避免直接文件路径:特别是操作MediaStore时权限精细管理:Android 11+使用细化媒体权限生命周期意识:应用专属目录随应用卸载删除用户体验优先:公共文件应出现在正确位置及时清理资源:特别是缓存和临时文件。

时小雨的专栏 1301

Android 获取缓存文件的目录,文件的目录,外部存储的目录

getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用 一.getCacheDir、getCacheDir getCacheDir()方法用于获取/data/data//cache目录 getFilesDir()方法用于获取/data/data//files目录 二.getExternalFiles...

热爱生活热爱技术的专栏 3220

Android之存储目录

安卓存储目录分为 内部存储 和 外部存储。 内部存储目录:即/data/ 目录,未root的手机无法查看。 外部存储目录:根据厂家不同,可能是 /storage或 /mnt文件夹。 先来一张结论图: 我们可在Android Studio右下角,使用Device File Explorer 工具来查看。 内部存储 我们可以直接使用内部存储保存文件。 对于内部存...

LVXIANGAN的专栏 1万+

Android系统中内部存储和外部存储(公有目录、私有目录、缓存目录)详解

文章目录一.概念二.获取可操作内部存储目录(随着用户删除app而删除)三.获取可操作外部存储目录1、外部九大公共目录:2、外部私有目录 (随着用户删除app而删除)3、外部缓存目录(随着用户删除app而删除)4、外部根目录 首先,明确一个概念,Android内部存储和外部存储并不是所谓的手机自带内存是内部存储,SD卡是外部存储。Android对内部存储和外部存储不是在物理上区分的,而是在逻辑上区分的。 一.概念 内部存储是指系统内部存储空间,在逻辑上用目录来区分的话就是data目录下的文件夹 除此之外dat

Yrainy_D的博客 5104

利用快马AI三分钟打造Android专属存储管理器 - 告别杂乱的应用缓存

特别是像Han1meViewer这样会产生大量缓存的应用,现在可以一目了然地看到占用情况,安全清理不需要的文件。于是决定开发一个专门管理应用专属存储空间的小工具,分享一下我的实现思路和过程。最近发现手机里各种应用的缓存文件越来越多,尤其是像Han1meViewer这类视频应用,下载的电影都存放在。使用File类的listFiles()方法遍历子目录,每个目录对应一个应用的专属存储空间。点击应用项进入详情页,展示该应用的所有存储目录和文件,支持多选操作。:计算每个应用目录的大小,区分缓存文件和用户数据。

EmeraldEagle36的博客 3166
下一篇: AndFix使用源码分析
wangShanCode
博客等级 码龄10年 4粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值