android openFileOutput有什么问题?

Fab*_*ien 31 java android

我正在尝试使用openFileOutput函数但它不编译并且无法识别该函数.我正在使用android sdk 1.6.这是一个sdk问题吗?这是参数问题吗?

import java.io.FileOutputStream;
public static void save(String filename, MyObjectClassArray[] theObjectAr) {
    FileOutputStream fos;
    try {
        fos = openFileOutput(filename, Context.MODE_PRIVATE);

        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(theObjectAr); 
        oos.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }catch(IOException e){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

nai*_*kus 57

您的方法应如下所示.将额外的Context作为参数.您可以通过此方法传递服务或活动

public static void save(String filename, MyObjectClassArray[] theObjectAr, 
  Context ctx) {
        FileOutputStream fos;
        try {
            fos = ctx.openFileOutput(filename, Context.MODE_PRIVATE);


            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(theObjectAr); 
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • `Context.MODE_PRIVATE`使文件仅对您的应用程序可见,以防有人想知道. (4认同)
  • 事实证明,我有一个权限问题.绝对不明显"权限被拒绝"问题会导致`FileNotFoundException`. (2认同)

Kon*_*rov 5

您正尝试从静态上下文调用非静态方法(您的方法具有静态修饰符).您要么必须使方法成为非静态方法,要么传入Context实例(大多数情况下为活动实例)并在对象上调用方法.