gpt4 book ai didi

android - 如何获取 Assets 中某个文件夹中的文件数量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:38 24 4
gpt4 key购买 nike

我的方法太慢了。 265 文件的结果在 14 秒内给我。

方法:

private void assetFilesAmount(String path) {
AssetManager assetManager = getAssets();
String assets[] = null;
try {
assets = assetManager.list(path);
if (assets.length == 0) {
filesAmount++;
} else {
for (int i = 0; i < assets.length; ++i) {
assetFilesAmount(path + "/" + assets[i]);
}
}
} catch (IOException ex) {
Log.e("tag", "I/O Exception", ex);
}
}

最佳答案

我最近遇到了同样的问题(我想从 assets 目录中复制一些文件),它位于应用程序中的某个位置,等待几秒钟也无法解决问题。 AssetManager.list() 太慢了。所以我想出了一个解决方案,它很丑但速度很快。

至少在我的情况下,因为 Assets 文件夹是用应用程序构建的,所以我不会经常更改它。所以我想到的解决方案是在 Assets 目录中包含一个文件,列出 Assets 中的所有文件。例如:

somedir/somefile.txt
somedir/anotherdir/anotherfile.txt
somedir/anotherdir/yetanotherfile.txt
somedir/anotherdir/somanyfiles.txt
...

所以它加载这个列表然后循环遍历列表而不是必须调用 AssetManager.list();

它既不漂亮也不优雅,可能会破坏各种编码实践,但就我而言,它花费的操作时间从 30 秒到 300 毫秒不等,所以对我来说这是值得的。

如果您的 Assets 文件夹变化很大,并且手动更新列表会很痛苦,您可能会在构建过程中放入一个脚本,而不是在构建时自动为您生成此目录列表文件。

关于android - 如何获取 Assets 中某个文件夹中的文件数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030272/

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