Android, ¿qué pasa con openFileOutput?

Estoy intentando usar la función openFileOutput pero no comstack y no reconoce la función. Estoy usando android sdk 1.6. ¿Es esto un problema de SDK? ¿Es esto un problema de parámetro?

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

Tu método debe ser el siguiente. Toma un contexto adicional como parámetro. A este método puedes pasar tu Servicio o Actividad

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

Está intentando invocar el método no estático desde el contexto estático (su método tiene un modificador estático). O bien debe hacer que su método sea no estático o pasarlo en una instancia de Contexto (instancia de actividad en la mayoría de los casos) e invocar el método en el objeto.

Además, no puede openOutputStream en una ruta. Causa esta excepción:

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

Para solucionar esto, necesita crear un objeto de archivo y simplemente crearlo así:

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