从SD卡获取特定文件的路径

时间:2013-08-08 09:18:18

标签: android-sdcard

我知道有很多问题和答案在讨论这个问题,但我找不到合适的答案。

我有sdcard名称 database.db 的文件。我想得到文件的路径。文件存储在 mnt / sdcard / db / database.db 。我需要这样的输出 mnt / sdcard / db / 请帮助我任何代码或示例将不胜感激

我只有文件名,那么是否可以从中获取路径?

1 个答案:

答案 0 :(得分:0)

再次编辑^ - ^:

我想我终于明白了你想要做什么:只有一个文件名作为输入,你想要搜索整个SD卡,如果它存在,你想获得目录的路径它在。

请记住,如果用户的SD卡包含大量文件夹和文件,则对文件的完整搜索可能会很慢。

这是一个搜索文件的简单功能:

public static void findFilePath(File dir, String filename, List<String> result) {

    // get all files in dir
    File[] files = dir.listFiles();
    for( File f : files ){
        if( f.isDirectory() ){
            // Recurse
            findFilePath(dir, filename, result);
        }

        else{
            if( f.getName().equals("filename") ){
                String absPath = f.getAbsolutePath();
                result.add(absPath.substring(0, absPath.lastIndexOf(File.separator)));
            }
        }
    }
}

以下是用法:

List<String> result = new ArrayList<String>();
findFilePath( Environment.getExternalStorageDirectory(), "database.db", result);

System.out.println(result.get(0));

现在,您有几个可能的问题:

  1. 可能包含您正在搜索的文件的目录不止一次
  2. 如果文件系统没有编入索引(我认为不是这样),并且文件和目录的数量很大,搜索可能会任意慢。