gpt4 book ai didi

android - 如何获取缓存目录: android的准确大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:29 31 4
gpt4 key购买 nike

需要:我只是想获取我手机中安装的每个应用程序占用的缓存大小。

我的方法:

PackageManager packageManager = getPackageManager();
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages)
{
try
{
Context mContext = createPackageContext(packageInfo.packageName, CONTEXT_IGNORE_SECURITY);
File cacheDirectory = mContext.getCacheDir();
if(cacheDirectory==null)
{
cacheArrayList.add("0");
}
else
{
cacheArrayList.add(String.valueOf(cacheDirectory.length()/1024));
}
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
}

结果:如果目录为空,则返回 0(作为条件)。但是如果目录存在,它总是返回 4 Kb。我按照以下过程检查了我的应用程序的缓存:

设置:->应用程序:->应用程序名称

但我在那里找到了它的 0B。

为什么会发生这种情况,有人可以解释一下吗?以及如何获得缓存的确切大小?

最佳答案

这对我来说更准确:

private void initializeCache() {
long size = 0;
size += getDirSize(this.getCacheDir());
size += getDirSize(this.getExternalCacheDir());
((TextView) findViewById(R.id.yourTextView)).setText(readableFileSize(size));
}

public long getDirSize(File dir){
long size = 0;
for (File file : dir.listFiles()) {
if (file != null && file.isDirectory()) {
size += getDirSize(file);
} else if (file != null && file.isFile()) {
size += file.length();
}
}
return size;
}

public static String readableFileSize(long size) {
if (size <= 0) return "0 Bytes";
final String[] units = new String[]{"Bytes", "kB", "MB", "GB", "TB"};
int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
}

Original post of the string to bytes formatting code

关于android - 如何获取缓存目录: android的准确大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16206722/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com