因此,我使用手机上的Excel创建了名为theBook.csv
的文件,该文件已保存到手机的Documents
文件夹中。当我尝试列出手机的Documents
文件夹的内容时,我收到一个NullPointerException
,说我试图to get length of null array
。无法在Android文档目录中列出或打开文件
这是我曾尝试:
String path = Environment.getExternalStorageDirectory().toString() + "/Documents";
// I have also tried:
// String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
// and
// String path = Environment.getRootDirectory().getAbsolutePath() + "/Documents";
Log.i("Files", "The path is: " + path);
File f = new File(path);
File file[] = f.listFiles();
try {
Log.i("Files", "Number of files: "+ file.length);
for (int i = 0; i < file.length; i++) {
Log.i("Files", "Found file with name:" + file[i].getName());
}
} catch (NullPointerException e) {
entoast("NPE"); // my toast message method
e.printStackTrace();
}
当我查看日志的path
值/storage/emulated/0/Documents
(无论是哪个三条线我尝试的),而我不能确定对应到Documents
文件夹,其中theBook.csv
位于。如果是这样,为什么不在日志文件中显示theBook.csv
?如果没有,我怎么让我的程序访问手机的实际Documents
文件夹,而不是一个空目录?
当手机通过USB连接进行文件传输时,Documents文件夹可以查看,而且在使用手机内置的文件浏览器时也是可观的。我在手机上运行Android 6.0,但该应用的最低要求SDK是Android 4.1。我的清单文件中也有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
行。
您必须添加'的完整列表<使用许可权的android:NAME =“android.permission.READ_EXTERNAL_STORAGE “/>'在清单文件中。 –
READ_EXTERNAL_STORAGE属于危险类别权限,您应该请求权限运行时间。此功能已添加到Android 6.0中 – USKMobility