将文件保存到android内存

时间:2011-01-29 21:05:06

标签: java android

我正在尝试使用android,我已经到了想要将内容保存到内存并从中读取的地步,但我有点卡住了。我找到了这篇文章http://developer.android.com/guide/topics/data/data-storage.html#filesInternal,因为它建议我创建了虚拟方法:

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);

上面的线条是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());

引发NPE,我甚至添加了

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

进入Androidmanifest.xml

我已经在Context ctx中创建了方法并传递了,但是我的ctx结束了null,我怎么能得到这个变量?将它设置为哪个值?

2 个答案:

答案 0 :(得分:1)

通过大量的Google搜索,我发现您需要将Context传递给您在onCreate方法Context ctx = getApplicationContext();中初始化的方法,然后将其传递给需要它的应用程序的其余部分。

答案 1 :(得分:0)

不要忘记隐含的'this'。您调用测试方法的Context派生对象可能为null。

- 编辑 -

或者你在应用程序的生命周期中过早地调用它。我相信在你打电话之前你需要完全初始化 - 最早可能是你的onCreate方法。