String folder = Environment.getExternalStorageDirectory()+ "/books";
File file=new File(folder);
File[] f;
f=file.listFiles(); //////f==null;
Toast.makeText(getApplicationContext(), f[1].toString(),
Toast.LENGTH_SHORT).show();
我无法解决错误。我需要帮忙。感谢。
答案 0 :(得分:1)
你能做的就是下面的支票
String path = Environment.getExternalStorageDirectory().toString()+"/books";
Log.d("Files", "Path: " + path);
File f = new File(path);
File file[] = f.listFiles();
if(file!=null&&file.length>0){
Toast.makeText(getApplicationContext(), f[1].toString(), Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "folder is empty", Toast.LENGTH_SHORT).show();
}
上面代码基本上做的是检查如果长度大于0且文件objext不为null。在列表中显示包含第二个文件名的toast。
答案 1 :(得分:0)
'file'是File not Folder。这就是为什么你无法调用file.listFiles()。
String path = Environment.getExternalStorageDirectory().toString()+"/books";
Log.d("Files", "Path: " + path);
File f = new File(path);
if (f.isDirectory()){
File file[] = f.listFiles();
Toast.makeText(getApplicationContext(), file[1].toString(), Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "folder is empty", Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:0)
我认为您的directory path
不存在。
查看File.listFiles()的文档。它说
表示文件和目录的抽象路径名数组 此抽象路径名表示的目录。阵列将是 如果目录为空则为空。 如果此摘要返回null pathname不表示目录,或者发生I / O错误。
您提供的目录路径不正确,这就是file.listFiles();
返回null的原因。
在使用Environment.getExternalStorageDirectory()
时,您可能没有为模拟器启用外部存储。只需确保您已启用外部存储空间,this链接就会有所帮助。
在访问f
之前检查 if(f!=null){
Toast.makeText(getApplicationContext(), f[1].toString(),
Toast.LENGTH_SHORT).show(); // also size of f[], if you really want to access f[1]
}
是否为空更安全:
public static void shrinkTo(List list, int newSize) {
int size = list.size();
if (newSize >= size) return;
for (int i = newSize; i < size; i++) {
list.remove(list.size() - 1);
}
}