【问题标题】:Null Pointer Exception when reading a file读取文件时出现空指针异常
【发布时间】:2013-08-09 05:37:49
【问题描述】:

我有两个活动:在第一个活动中,我将字符串“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。但是有文件,当我查看我的平板电脑文件管理器时,我可以看到它们。

有人知道解决这个问题的方法吗?先谢谢了。

【问题讨论】:

  • 你能发布堆栈跟踪吗?

标签: android file nullpointerexception directory


【解决方案1】:

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

  1. file.canRead() - 返回一个布尔值,表示文件是否可读。
  2. file.isDirectory() - 返回一个布尔值,说明文件是否为目录。

既然你说路径是正确的,可能第二个选项不是解决方案,但第一个可以。

【讨论】:

  • 最终以不同的方式引用文件。但是我会标记你是正确的,因为我将添加这些方法来进行错误检查。谢谢
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 2019-03-26
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多