Rob*_* S. 3 java filesystems file-io android file
在我正在为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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你有某种目录结构,你需要递归搜索,那么你将不得不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;
}
Run Code Online (Sandbox Code Playgroud)
在哪里DirFilter实现FileFilter这种方式:
public static class DirFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
if( pathname.isDirectory() )
return true;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14214 次 |
| 最近记录: |