Android: как хранить данные во внутренней памяти?

Здесь прекрасно описано, как это сделать, единственная проблема: он не знает функции openFileOutput() ;

 private void saveSettingsFile() { String FILENAME = "settings"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); //openFileOutput underlined red try { fos.write(string.getBytes()); fos.close(); } catch (IOException e) { Log.e("Controller", e.getMessage() + e.getLocalizedMessage() + e.getCause()); } } 

Это соответствующие пакеты, которые я импортировал:

 import java.io.FileOutputStream; import java.io.IOException; import android.content.Context; 

Взгляните на этот пример использования FileOutputStrem из примеров на dev.android.com. Это должно дать вам представление о том, как правильно использовать его.

Класс, в котором объявлен этот метод, определяется как «Статический». Вот почему он бросает ошибку. Удалите статику из определения класса и бинго …

Просто добавьте блок «try catch» и поставьте их между ними.

Как это:

  private void saveSettingsFile(String FILENAME, String data) { FileOutputStream fos; try { fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(data.getBytes()); fos.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // openFileOutput underlined red catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Когда на линии появляется красная линия. Сначала проверьте, что линия находится под полной сентиментальной или только правой стороной сенсенса (т. Е. После знака равенства).

Если он охватывает всю строку, тогда он должен исправить некоторые ошибки.

Или если это только под правой стороной чувства … Тогда он должен хотеть какое-то исключение, обрабатывающее вещи.

Если вы не знаете, какой тип исключения он может генерировать …
Не бойтесь, просто напишите весь код в блоке try (try {}), а затем добавьте catch и передайте объект Exception внутри catch .. Теперь его штраф ..

Как это :

  try { ...........your code ...... } catch(Exception e) { e.printstacktrace(); } 

Теперь все в порядке.

спасибо

OpenFileOutput – это метод объекта Context. И не забудьте добавить предложение finally, чтобы закрыть поток. Bellow – пример (немного неуклюжий из-за Java 6 из-за Android).

 String data = "Hello"; FileOutputStream fos = null; try { fos = mContext.openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(data.getBytes(Charset.defaultCharset())); } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } 

Переменная mContext должна быть определена где-то выше и инициализирована как mContext = getApplicationContext (), если вы находитесь внутри действия