为内部存储创建文件将返回Null Pointer Exception

时间:2014-03-25 06:27:13

标签: java android json internal-storage

您好我有一个应该将JSON数组保存到内部存储的项目。 这是我的代码:

public void createFile(String data){
    try{
        FileOutputStream fos = openFileOutput("userObj", Context.MODE_PRIVATE);
        fos.write(data.getBytes());
        fos.close();
        Log.d(TAG, "Successfully created userObj file.");
    }catch (Exception e){
        Log.d(TAG, "Failed to create userObj " + e);
    }
}

但是当我打电话给createFile(response);时 我得到了

java.lang.NullPointerException at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:180)

2 个答案:

答案 0 :(得分:0)

  1. 无论您使用内部存储还是外部存储,都要检查您是否拥有WRITE_EXTERNAL_STORAGE权限。
  2. 检查文件路径是否正确。您必须按Environment.getExternalStorageDirectory ()
  3. 创建文件路径
      

    注意:不要在这里混淆“外部”这个词。这个目录   可以更好地被视为媒体/共享存储。它是一个文件系统   可以容纳相对大量的数据,并且可以共享   所有应用程序(不强制执行权限)。传统上这是   SD卡,但它也可以作为内置存储器实现   与受保护的内部存储区别的设备,可以是   作为文件系统安装在计算机上。

答案 1 :(得分:0)

  

我在android.content.ContextWrapper.openFileOutput上获得java.lang.NullPointerException(ContextWrapper.java:180

您没有与之合作的有效Context

可能它是Activity您已使用new自我实例化了。不要这样做。活动只能通过框架的Intent实例化。如果您需要传递Context,请将引用传递给框架初始化的Context对象,例如Activity周围。