Некоторые тесты показали, что каталог по умолчанию, в котором 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;
}
}