我的文件[] Nullpointerexecption错误

时间:2015-07-26 10:14:30

标签: android

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();

我无法解决错误。我需要帮忙。感谢。

3 个答案:

答案 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);
    }
}