0

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

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

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

4

1 回答 1

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. 如果文件系统没有被索引(我不认为是),并且文件和目录的数量很大,那么搜索可能会非常慢。
于 2013-08-08T09:27:00.810 回答