【问题标题】:How to get complete path and name of each file in Download directory in Android如何在Android的下载目录中获取每个文件的完整路径和名称
【发布时间】:2015-02-01 11:39:41
【问题描述】:

我要开发一个应用程序,用户可以在其中从下载目录中选择文件。现在我需要用户选择的文件的路径 + 名称。

DownloadManager dm = (DownlaodManager) getSystemService(DOWNLOAD_SERVICE);

通过这种方式,用户可以选择文件。现在我需要选择文件的绝对路径。但这里的问题是,如果用户选择了一个文件,该文件将被打开(这不应该发生)

你们中的任何人都可以帮助我吗?

【问题讨论】:

  • 到目前为止您尝试了什么?向我们展示您的代码
  • DownloadManager dm = (DownlaodManager) getSystemService(DOWNLOAD_SERVICE);通过这种方式,用户可以选择文件。现在我需要选择文件的绝对路径。但这里的问题是,如果用户选择了一个文件,该文件将被打开(这不应该发生)
  • 请添加到问题不要评论

标签: android file directory


【解决方案1】:

使用, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 访问该文件夹,File.listFiles() 访问该目录中的单个文件。

看这个粗略的例子,

编写一个方法来浏览和列出Downloads目录中的每个文件, 如果在Downloads 文件夹中找到目录,也列出其文件,

public void getFilesFromDir(File filesFromSD) {

    File listAllFiles[] = filesFromSD.listFiles();

    if (listAllFiles != null && listAllFiles.length > 0) {
        for (File currentFile : listAllFiles) {
            if (currentFile.isDirectory()) {
                getFilesFromDir(currentFile);
            } else {
                if (currentFile.getName().endsWith("")) {
                    // File absolute path
                    Log.e("File path", currentFile.getAbsolutePath());
                    // File Name
                    Log.e("File path", currentFile.getName());

                }
            }
        }
    }
}

获取Downloads 目录的路径,并将其作为参数传递给上述方法,

File downloadDir = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS).getAbsolutePath());

getFilesFromDir(downloadDir);

【讨论】:

  • 非常感谢,这对我有帮助:))
  • 完成!但无论如何我有第二个问题。我如何从用户选择的文件中获取名称
  • @ramazan86,我已经更新了关于如何获取文件名的答案。
  • 我看到 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).listFiles() 在三星 Galaxy S5 上返回 null。根据 javadoc,这是因为 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 不是目录。但是……我怎样才能在该设备上获取“下载”文件夹?
【解决方案2】:

不要忘记您需要在清单中设置此权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

您可以改用 WRITE_EXTERNAL_STORAGE。

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2010-10-15
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多