android что не так с openFileOutput?



Я пытаюсь использовать функцию 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();
}
}
468   3  

3 ответов:

Ваш метод должен быть следующим. Принимает в качестве параметра дополнительный контекст. К этому методу вы можете передать свою услугу или Действие

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

Вы пытаетесь вызвать нестатический метод из статического контекста (ваш метод имеет статический модификатор). Вы должны либо сделать свой метод нестатическим, либо передать в экземпляр контекста (экземпляр действия в большинстве случаев) и вызвать метод на объекте.

Также вы не можете openOutputStream на пути. Это вызывает такое исключение:

java.lang.IllegalArgumentException: File /storage/sdcard0/path/to/file.txt contains a path separator

Чтобы исправить это, вам нужно создать файловый объект и просто создать его следующим образом:

String filename = "/sdcard/path/to/file.txt";
File sdCard = Environment.getExternalStorageDirectory();
filename = filename.replace("/sdcard", sdCard.getAbsolutePath());
File tempFile = new File(filename);
try
{
    FileOutputStream fOut = new FileOutputStream(tempFile);
    // fOut.write();
    // fOut.getChannel();
    // etc...
    fOut.close();
}catch (Exception e)
{
    Log.w(TAG, "FileOutputStream exception: - " + e.toString());
}

Comments

    Ничего не найдено.