Android, что не так с openFileOutput?
Я пытаюсь использовать функцию openFileOutput, но он не хочет компилировать... не распознает функцию. Im, использующий 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();
}
}
Ответы
Ответ 1
Ваш метод должен быть следующим. В качестве параметра используется дополнительный контекст. К этому методу вы можете передать свой сервис или мероприятие
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();
}
}
Ответ 2
Вы пытаетесь вызвать нестатический метод из статического контекста (ваш метод имеет статический модификатор). Вам либо нужно сделать ваш метод нестатическим, либо передать экземпляр контекста (в большинстве случаев - экземпляр активности) и вызвать метод для объекта.
Ответ 3
Также вы не можете 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());
}