【问题标题】:how to list files in a directory?如何列出目录中的文件?
【发布时间】:2011-11-12 23:22:21
【问题描述】:

我是 android 开发的新手,所以如果这是一件容易的事,请原谅我。

我想获取 sd 卡目录中的所有文件并将它们显示在微调器中,但我不知道如何解决。 这就是我所拥有的,我什至不知道它是否有任何好处。

//creates this directory if its not there??     
File sd = new File("/sdcard/myfolder");

                 //gets a list of the files
                 File[] sdDirList = sd.listFiles(); 

                 //add them to the spinner array (this makes it crash)
                 for(int i=0;i<sdDirList.length;i++) 
                 array_spinnerLoad[i] = sdDirList[i].getName();

那么我哪里出错了? 任何有用的链接到任何地方的易于使用的教​​程? 它不一定是微调器,只是我可以从中选择的一些列表

谢谢你:)

编辑: 它不会因此而崩溃,但微调器数组未填充

File[] sdDirList = sd.listFiles(); 
             if (sdDirList != null)
             {
                 array_spinnerLoad=new String[sdDirList.length];

             for(int i=0;i<sdDirList.length;i++)

             array_spinnerLoad[i] = sdDirList[i].getName();
         }

【问题讨论】:

  • 小提示(一般情况下不确定是不是这里的问题):不要硬编码到 SD 卡之类的路径 - 因为这些路径因不同而异设备。请改用Environment.getExternalStorageDirectory()。它将返回到每个设备上的主大容量存储的有效路径。

标签: android arrays load spinner


【解决方案1】:

如果/sdcard/myfolder 不存在或不是目录,则listFiles 返回null。您可能正在与 NPE 崩溃。您可以使用exists()isDirectory() 来诊断问题所在。 (另外,你可以测试sdDirList != null。)

附:它将帮助您获得更准确的答案以发布有关崩溃的详细信息(例如异常)。

【讨论】:

  • 好的,谢谢,因为我说我是新手。 logcat 说它的这一行 array_spinnerLoad[i] = sdDirList[i].getName();创建一个空指针异常
  • @user1033558 - 如果sdDirListnull 会发生这种情况——您试图访问不存在的数组的第一个元素。 (如果sdDirListnull 作为第一个元素,但listFiles 不返回数组中的null 值,也会发生这种情况。)
  • 感谢 ted,我已手动将文件放入目录中,但那里仍然没有任何内容。我想我需要一个教程,但还没有找到我理解的 1 个。
  • @user1033558 - 在 alextsc 的评论之后 - 使用 Environment.getExternalStorageDirectory()Environment.getExternalStoragePublicDirectory() 获取文件的根路径。不要在代码中使用文字字符串。我怀疑您的文件不在您认为与您的程序相关的位置。 (顺便说一句,您是如何“手动将文件放入目录中”的?)
  • 我把文件放在我电脑的目录中。我现在可以工作了,谢谢。经过大量代码杂耍之后,它似乎工作了,与在数组填充之前设置适配器有关(我认为大声笑)抱歉
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 2012-12-09
  • 2012-01-28
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多