我是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卡可用”。 所以,请帮助我知道我做的是否正确或缺少任何东西。
...谢谢
答案 0 :(得分:0)
要在外部存储上读取或写入文件,您的应用必须获得READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
系统权限。例如:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
如果您需要同时读取和写入文件,那么您只需要WRITE_EXTERNAL_STORAGE
权限,因为它也隐含地要求读取权限。
另见Documentation。它将解决您关于存储问题的所有未来。