【问题标题】:How to read files and folders in a specific directory on android如何在android上读取特定目录中的文件和文件夹
【发布时间】:2014-01-22 09:10:11
【问题描述】:

我正在尝试读取用户指定的目录中的所有文件和文件夹。

我用:

File file = new File("/");
String[] files = file.list();

这有效,并为我提供了根目录中文件名和文件夹的列表。
这很好用,但是当我指定除“/”以外的任何内容时,它会崩溃。

我该如何解决这个问题,是我没有给它一个有效的路径还是我的代码有问题?

【问题讨论】:

  • 发布崩溃的堆栈跟踪。
  • 除了/ 之外的其他内容是什么意思?另外,在获取列表之前,请检查文件是否存在。
  • 抱歉,我从来没有让模拟器工作,所以我直接在手机上运行程序,它没有给出任何崩溃报告。
  • "它没有给出任何崩溃报告。" - 确实如此。查看 Eclipse 中的 LogCat。
  • @gumba:IDE 中的 Logcat 选项卡应该会显示您遇到的错误。如果不是(这不太可能),您可以使用 Google Play 提供的名为 CatLog 的应用程序查看错误日志。将这个免费的应用程序安装到您的设备中,并将您的应用程序的错误日志从 Catlog 发布到此处。如果没有错误日志,我们将无法为您提供帮助。

标签: android io


【解决方案1】:

/是android的根目录,没有storage文件夹名,所以在使用时

String[] files = file.list();

您要求 android 提供 storage 中甚至不存在的文件列表。因此,您会遇到错误。

最佳做法是假设该文件夹可能不存在,即使您确定它会存在,例如用户可以删除您在 SDCard 上创建的文件夹,这将导致您的应用程序崩溃。所以使用下面的代码

if(file.exists()){
String [] filenames = file.list();
}

这只是我的猜测,但我认为您正在搜索 SDCard,如果是,请使用

Environment.getExternalStorageDirectory()

具有读取 SDCard 文件的权限。

更新:- 读取内部和外部存储器中的文件请看以下链接https://stackoverflow.com/a/17546843/1979347

【讨论】:

  • 我刚刚选择了存储进行测试,我知道它存在于我的手机上。现在我只是想读取除“/”之外的所有文件和文件夹。
  • storage 到底在哪里,我认为您指的路径不正确。
  • 如果我从“/”读取它就在那里,如果我指定“/”它应该可以正常工作,但其他任何东西都会崩溃。我认为它应该只是 /storage 但这不起作用。
  • 我真的不认为 storage 会在/ 中。请使用我的if 循环来检查文件是否存在,因为/storage 是正确的。除非您具有 root 权限并使用根资源管理器应用程序创建文件夹,否则您无法在根文件夹中创建目录。如果两者都有,则该文件夹可能不存在。
  • 我不记得给予任何许可,但我有一个应用程序,我已经看到存在存储空间。你知道权限码吗?
猜你喜欢
  • 2013-08-10
  • 1970-01-01
  • 2020-07-01
  • 2023-04-05
  • 1970-01-01
  • 2018-12-01
  • 2011-08-15
  • 2022-01-19
  • 2023-03-28
相关资源
最近更新 更多