无法从 SD 卡读取目录或文件
Unable to read directories or files from a sd card
我是 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 卡上可用的目录 "Attachments" 创建一个目录文件对象。我还尝试了以下代码来实现相同的目的。
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 card Available"。
所以请帮我看看我是做对了还是遗漏了什么。
谢谢....
为了读取或写入外部存储上的文件,您的应用必须获得READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
系统权限。例如:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
如果您需要读取和写入文件,那么您只需要请求 WRITE_EXTERNAL_STORAGE
权限,因为它隐含地也需要读取权限。
另见此 Documentation。它将解决您未来所有关于 存储 的问题。
我是 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 卡上可用的目录 "Attachments" 创建一个目录文件对象。我还尝试了以下代码来实现相同的目的。
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 card Available"。 所以请帮我看看我是做对了还是遗漏了什么。
谢谢....
为了读取或写入外部存储上的文件,您的应用必须获得READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
系统权限。例如:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
如果您需要读取和写入文件,那么您只需要请求 WRITE_EXTERNAL_STORAGE
权限,因为它隐含地也需要读取权限。
另见此 Documentation。它将解决您未来所有关于 存储 的问题。