为什么这个Android FileOutputStream会抛出NullPointerException?

时间:2010-08-16 15:52:13

标签: android nullpointerexception fileoutputstream

似乎没有任何需要为文件io设置的Android清单权限。

public class Device extends Activity {
    private static final Configuration config = new Configuration();
    ...
    private boolean applyMenuChoice(MenuItem item) {
        switch (item.getItemId()) {
        ...
        case R.id.menuSave:
            ...
            configuration.modify(name, to, from, user);
            configuration.write();
            ...

public class Configuration extends Activity {
    private final static String CONFIG = "config.txt";
    private static StringBuilder config = new StringBuilder();
    ...
    public void write() {
        try {
            FileOutputStream fos = openFileOutput(CONFIG, Context.MODE_PRIVATE);
            fos.write(config.toString().getBytes());
            ...

3 个答案:

答案 0 :(得分:1)

使用正确的方法替换活动的非法实例化解决了此问题。非常感谢(再次)Falmarri。

答案 1 :(得分:0)

你想把文件写到哪里?如果它在设备的SD卡上,则需要在android-manifest中设置WRITE_EXTERNAL_STORAGE权限。您可能还需要设置路径而不是仅使用文件名。

答案 2 :(得分:0)

当此指针不正确时,在此方案中抛出异常。您可能使用其ctor像常规对象创建活动,而不是使用intent的start活动。在这种情况下,不要调用openFileOutput或this.openFileOutput,但是你应该将你所在的上下文作为参数发送到write()函数,并使用这个上下文,即:

write(Context context)
{
     context.openFileOutput(...)
     ...