Java 将文件保存到android内存
我正在用android做实验,我想把一些东西保存到内存中并从中读取,但我有点被卡住了。我找到了这篇文章,正如它所建议的,我创建了虚拟方法:Java 将文件保存到android内存,java,android,Java,Android,我正在用android做实验,我想把一些东西保存到内存中并从中读取,但我有点被卡住了。我找到了这篇文章,正如它所建议的,我创建了虚拟方法: public void test(){ String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.wri
public void test(){
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
}
总是抛出NullPointerException,有人知道我遗漏了什么吗?可能是Androidmanifest.xml中的一些权限
问题更新:
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
线上的trows NPE。我的类是抽象的,它的扩展活动,我不知道这是否相关
堆栈跟踪:
01-29 22:30:44.575: ERROR/TEST(458): java.lang.NullPointerException
01-29 22:30:44.575: ERROR/TEST(458): java.lang.RuntimeException: java.lang.NullPointerException
似乎任何IO操作都会抛出NPE,我也尝试过:
try {
File myDir = new File(getFilesDir().getAbsolutePath());
String s = "";
FileWriter fw = new FileWriter(myDir + "/Test.txt");
fw.write("Hello World");
fw.close();
BufferedReader br = new BufferedReader(new FileReader(myDir + "/Test.txt"));
s = br.readLine();
// Set TextView text here using tv.setText(s);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
File myDir = new File(getFilesDir().getAbsolutePath());
我甚至还加了一句
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
转换为Androidmanifest.xml
我已经在上下文ctx中创建了方法和传递,但我的ctx最终为空,我如何获得这个变量?将其设置为哪个值?不要忘记隐式的“this”。调用测试方法的上下文派生对象可能为null --编辑--
要么是这样,要么是在应用程序生命周期的早期调用。我相信在调用此函数之前,您需要完全初始化-最早的可能是onCreate方法。通过大量的谷歌搜索,我发现您需要将上下文传递给您的方法,您可以在
onCreate
方法Context ctx=getApplicationContext()中初始化该方法代码>并将其传递给需要它的应用程序的其余部分。哪行抛出NPE?对.write()的调用?或者在其他地方?它在哪一行抛出NullPointerException
?换句话说,什么对象是空的?@jameshouse@commonware我更新了问题,那么你能发布堆栈跟踪吗?NPE必须发生在对openFileOutput()的调用中,但查看具体位置可能很有趣。我不太明白你在说什么,但我的主类应用程序中有onCreate方法。我必须在里面做什么?@c0mrade-你什么时候调用你的测试方法?活动源自上下文,因此您可以直接调用openFileOutput,但必须等待上下文完全初始化后才能调用它。因此,您最早可以在onCreate中调用您的测试方法。例如,您无法在活动构造函数中调用。