读取文件时出现空指针异常

时间:2013-08-09 05:37:50

标签: android file nullpointerexception directory

我有两个活动:在第一个活动中,我将字符串“pathName”传递给第二个活动。我收到额外的好,我可以从这个路径名创建一个文件。当我尝试从该文件调用.listFiles()时出现问题。

代码: 第一项活动

    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

            String pathToSend = albumDirectory+albumList.get(position);
            Intent i = new Intent(getBaseContext(),GalleryImageSlider.class);
            i.putExtra("pathName", pathToSend);
            startActivity(i);
        }

第二项活动:

    List<File> imageList;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_capture_gallery);

    Intent i = getIntent();
    filePath = i.getExtras().getString("pathName");
    albumFile = new File(filePath);

    Log.d("Fragment","File Path: " + albumFile.getAbsolutePath());
            //I can see this directory on my tablet, and I can see the files within. So the file
            path is correct

    try{
        imageList = Arrays.asList(albumFile.listFiles());

    }
    catch(NullPointerException e){
        Log.e("Error", "NPE: " + e);
    }

据我所知,如果没有要读取的文件,.listFiles会返回null。但是有文件,当我查看我的平板电脑文件管理器时,我可以看到它们。

有人看到解决这个问题的方法吗?先谢谢。

3 个答案:

答案 0 :(得分:2)

问题可能是因为路径不是目录,或者您没有权限读取它。以下是在致电listFiles()之前应验证的一些方法提示:

  1. file.canRead() - 返回一个bool,说明文件是否可读。
  2. file.isDirectory() - 返回一个bool,说明文件是否是目录。
  3. 既然你说路径是正确的,可能第二个选项不是解决方案,但第一个选项可能是。

答案 1 :(得分:0)

你可能错过了PERMISSON这样做,listFiles()返回null是某些情况,例如找不到目录,或者你没有访问该目录的权限。在AndroidManifest.xml中检查您的PERMISSION。您是否添加了READ_EXTERNAL_STORAGE以获得许可?希望这会有所帮助。

答案 2 :(得分:0)

当您将设备连接到PC时,SD卡已被删除,您无法访问文件。