gpt4 book ai didi

java - 如何计算 Android 上具有特定扩展名的文件数?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:40 25 4
gpt4 key购买 nike

在我为 Android 开发的应用程序中,我允许用户使用扩展名“.rbc”创建特定于我的应用程序的文件。到目前为止,我已经成功地创建、写入和读取这些文件。

现在我正在尝试计算存在的这些文件的数量。我不是特别熟悉 Java,而且我刚刚开始为 Android 编程,所以我觉得有点迷茫。到目前为止,我为此所做的所有尝试都未能找到任何带有我的扩展名的文件。

所以我基本上有两个问题需要回答,这样我才能弄清楚:

Android 存储应用程序创建的文件的默认目录在哪里?

你有什么例子可以给我在 Android 上计算具有特定扩展名的文件吗?

非常感谢您抽出宝贵时间。

最佳答案

一些测试告诉我,Android 存储应用程序使用 Context.getFilesDir() 创建的文件的默认目录是/data/data/<your_package_name>/files

要计算任何给定目录中的文件,您可以使用 File.listFiles(FileFilter)在根目录上。你的 FileFilter 应该是这样的(过滤“.rbc”文件):

public static class RBCFileFilter implements FileFilter {

@Override
public boolean accept(File pathname) {
String suffix = ".rbc";
if( pathname.getName().toLowerCase().endsWith(suffix) ) {
return true;
}
return false;
}

}

如果您有某种目录结构需要递归搜索,那么您将不得不 File.listFiles(FileFilter)在整个目录结构中。它应该是这样的:

public static List<File> listFiles(File rootDir, FileFilter filter, boolean recursive) {
List<File> result = new ArrayList<File>();
if( !rootDir.exists() || !rootDir.isDirectory() )
return result;


//Add all files that comply with the given filter
File[] files = rootDir.listFiles(filter);
for( File f : files) {
if( !result.contains(f) )
result.add(f);
}

//Recurse through all available dirs if we are scanning recursively
if( recursive ) {
File[] dirs = rootDir.listFiles(new DirFilter());
for( File f : dirs ) {
if( f.canRead() ) {
result.addAll(listFiles(f, filter, recursive));
}
}
}

return result;
}

哪里DirFilter会实现 FileFilter这样:

public static class DirFilter implements FileFilter {

@Override
public boolean accept(File pathname) {
if( pathname.isDirectory() )
return true;

return false;
}

}

关于java - 如何计算 Android 上具有特定扩展名的文件数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5058934/

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