Android: 从其他 class 写入文件 nullpointerexception
Android: Write file from other class nullpointerexception
我正在尝试从另一个 class 写入一个文件,但我得到一个我无法解决的空指针异常。下面的代码可以在mainactivity中使用没有任何问题,但是当我尝试在我的第二个class中使用它时,我得到了错误。
public void writeFile() {
String text = "Hello world";
String fileName = "TestFile.txt";
FileOutputStream fileOutputStream;
MainActivity maObj = new MainActivity();
try {
fileOutputStream = maObj.openFileOutput(fileName, maobj.MODE_PRIVATE);
fileOutputStream.write(text.getBytes());
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
您需要传递 activity 上下文而不是在 write 方法中创建新的 activity 实例 as
public void writeFile(Context context) {
并删除 MainActivity maObj = new MainActivity();
,因为无法在 Android 中以这种方式实例化活动。此外,更改
fileOutputStream = maObj.openFileOutput(fileName, maobj.MODE_PRIVATE);
到
fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
完成后,您的方法应如下所示:
public void writeFile( Context context ) {
String text = "Hello world";
String fileName = "TestFile.txt";
FileOutputStream fileOutputStream;
try {
fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
fileOutputStream.write(text.getBytes());
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
现在将您的方法称为
writeFile(MainActivity.this);
来自 MainActivity
class.
您不能像在此处那样使用 new
构造函数创建 Activity
。
MainActivity maObj = new MainActivity();
改成这个
fileOutputStream = this.openFileOutput(文件名, maobj.MODE_PRIVATE);
我正在尝试从另一个 class 写入一个文件,但我得到一个我无法解决的空指针异常。下面的代码可以在mainactivity中使用没有任何问题,但是当我尝试在我的第二个class中使用它时,我得到了错误。
public void writeFile() {
String text = "Hello world";
String fileName = "TestFile.txt";
FileOutputStream fileOutputStream;
MainActivity maObj = new MainActivity();
try {
fileOutputStream = maObj.openFileOutput(fileName, maobj.MODE_PRIVATE);
fileOutputStream.write(text.getBytes());
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
您需要传递 activity 上下文而不是在 write 方法中创建新的 activity 实例 as
public void writeFile(Context context) {
并删除 MainActivity maObj = new MainActivity();
,因为无法在 Android 中以这种方式实例化活动。此外,更改
fileOutputStream = maObj.openFileOutput(fileName, maobj.MODE_PRIVATE);
到
fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
完成后,您的方法应如下所示:
public void writeFile( Context context ) {
String text = "Hello world";
String fileName = "TestFile.txt";
FileOutputStream fileOutputStream;
try {
fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
fileOutputStream.write(text.getBytes());
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
现在将您的方法称为
writeFile(MainActivity.this);
来自 MainActivity
class.
您不能像在此处那样使用 new
构造函数创建 Activity
。
MainActivity maObj = new MainActivity();
改成这个
fileOutputStream = this.openFileOutput(文件名, maobj.MODE_PRIVATE);