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