Android: как хранить данные на внутренней памяти? - PullRequest
7 голосов
/ 02 сентября 2010

Это прекрасно описано здесь как это сделать, единственная проблема: он не знает функцию 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;

Ответы [ 4 ]

2 голосов
/ 02 сентября 2010

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

1 голос
/ 16 марта 2012

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

0 голосов
/ 22 августа 2016

openFileOutput - это метод объекта Context. И не забудьте добавить предложение finally, чтобы закрыть поток. Ниже приведен пример сильфона (немного неуклюжий из-за 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 (), если вы находитесь внутри действия

0 голосов
/ 02 августа 2013

Просто добавьте блок «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();

  }

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

Спасибо

...