【问题标题】:Get path of Specific file from SD Card从 SD 卡获取特定文件的路径
【发布时间】:2013-08-08 18:41:45
【问题描述】:

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

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

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

【问题讨论】:

  • 抱歉拼写和语法错误

标签: android-sdcard


【解决方案1】:

再次编辑^-^:

我想我终于明白了你想要做什么:只有一个文件名作为输入,你想在整个 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. 如果文件系统没有被索引(我认为不是),并且文件和目录的数量很大,搜索可能会非常慢。

【讨论】:

  • 感谢您的回答。我知道。但我不需要它。我需要一个可以解析文件名并返回文件路径的方法或其他东西
  • 对错误的帖子表示抱歉。那没起效。我将 database.db 放入 mnt/sdcard/db/database.db 但它只返回 mnt/sdcard
  • 通过这样做,您是否将“database.db”替换为“db\database.db”?或者您可能想为您指定的文件搜索整个 SD 卡?这是你的问题吗?
  • 对不起,我正在编辑我的问题。在我的应用程序中,用户必须将 database.db 文件放入文件夹中。我想将实际路径形式与用户选择的路径进行比较
  • 抱歉湖人误会
猜你喜欢
  • 1970-01-01
  • 2020-03-26
  • 2018-10-12
  • 2012-11-22
  • 2013-05-17
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多