2016-09-07 121 views
1

好吧,快速提醒我,我是android编程新手。 我对uni的java有非常基本的经验。 我最近一直在与我的三星Galaxy Tab的android工作室和应用程序大厦搞乱。 对不起,如果这之前已经问过,但我看不到它。Android - 访问存储位置

我曾试图弥补,显示我的SD卡上的所有文件名称的应用程序。就在最高层。我做了一个快速界面,只有一个按钮和一个文本视图开始(我离开单个文本视图不会显示一个列表,但有问题,但我到那个)无论如何

结束了以下代码。

*public void ShowFolder(View view){ 
    TextView test = (TextView)findViewById(R.id.View); 
    root = new File(Environment.getRootDirectory().toString()); 

    File[] Files; 
    Files = root.listFiles(); 

    String[] File_List; 
    File_List = root.list();* 

然后我运行这个使用调试器,看看最后在两个数组列表。 我运行了这段代码三次,但将“Environment.getRootDirectory”改为“getExternalStorageDirectory()”和“getDataDirectory()”。

只有getRootDirectory版本将返回anything.In两个其他情况下,调试器显示为空文件和Files_list。 我知道他们是有效的位置,因为使用这些命令然后输出到字符串,我可以手动在我的平板电脑上用文件浏览器找到。

所以,简单地说,你为什么不所有这三个选项返回文件列表? 我首先想到它的权限,但我不确定如何确认这一点。

(很抱歉的长期职位)

回答

1

不要使用toString()创建FilegetRootDirectory()已经返回File对象。

尝试这样:

File root = Environment.getRootDirectory(); 
String[] rootList = root.list(); 
File[] rootListFiles = root.listFiles(); 

你也需要获得许可READ_EXTERNAL_STORAGE,你可以看到在getExternalStorageDirectory()

+0

OK了文档在这里,做出这些变化。 因此,这是我的错误练习,而不是一个错误? 为什么getExternalStorageDirectory()和getDataDirectory()不会在数组列表返回任何项目的任何信息? –

+0

我已经编辑了我的答案,并提供了关于可能缺少许可的其他信息。 – rafal

+0

谢谢,添加了权限,我可以返回所有3个目录函数的值。 还有其他类似的函数用于返回目录路径吗? 特别是将路径返回到我的SD卡。我也尝试过查找这个,但看起来getExternalStorageDirectory()函数在某些时候会执行此操作,而不是其他操作,具体取决于正在使用的设备。 –