无法从SD卡读取目录或文件

时间:2015-02-17 14:41:48

标签: android android-sdcard

我是Android开发的新手,我试图从我的SD卡读取一个目录,但没有成功。下面是我为实现它而编写的代码

File sdcard = Environment.getExternalStorageDirectory();           
if(sdcard.exists()) {
    Log.d("Sd card", "Sd card exist");
    File[] file_names = sdcard.listFiles();
    for(File x : file_names) {
        Log.d("File Name",x.getName());
    }
}

Control传递了if条件,然后在“for each”循环行中得到了NullPointerException。可能函数sdcard.listFiles()返回null。我有一张带有许多文件夹和文件的SD卡。实际上我必须为我的SD卡上的目录“附件”创建一个目录文件对象。我也尝试了以下代码来实现相同的目标。

File file = new File(android.os.Environment.getExternalStorageDirectory() +     File.separator + "Attachments");

File file = new File(Environment.getExternalStorageDirectory() + File.separator + "Attachments");
当我调用函数file.exists()时,

在两个代码上都返回false。

我还通过以下代码检查了SD卡是否已安装。

String sdCardAvail = Environment.getExternalStorageState();
 if(sdCardAvail.equals(Environment.MEDIA_MOUNTED))
        Log.d("Card status", "Sd card Available");

以上代码在log cat上印有“Sd卡可用”。 所以,请帮助我知道我做的是否正确或缺少任何东西。

...谢谢

1 个答案:

答案 0 :(得分:0)

要在外部存储上读取或写入文件,您的应用必须获得READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE系统权限。例如:

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

如果您需要同时读取和写入文件,那么您只需要WRITE_EXTERNAL_STORAGE权限,因为它也隐含地要求读取权限。

另见Documentation。它将解决您关于存储问题的所有未来。