Исключение nullpointer Android filewrite - PullRequest
0 голосов
/ 26 июля 2011

В моем приложении есть 3 EditTexts.Я хочу записать содержимое этого EditTexts в файл, но filewrite выдает исключение nullpointer.Почему?

OutputStream f1; объявлено глобально.

BtnSave = (Button)findViewById(R.id.Button01);
BtnSave.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        intoarray =   name + "|" + number + "|" + freq + "\n";
        Toast.makeText(Main.this, "" + intoarray, Toast.LENGTH_SHORT).show();
        //so far so good
          byte buf[] = intoarray.getBytes(); 

          try {
            f1 = new FileOutputStream("file2.txt");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
          try {
            f1.write(buf);  //nullpointer exception
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
          try {
            f1.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }

Ответы [ 3 ]

0 голосов
/ 26 июля 2011

То, как вы в настоящее время используете это, не сработает, обычно вы пытаетесь выполнить запись во внутреннее хранилище, которое является частным для вашего приложения и должно находиться в каталоге ваших приложений.

Правильный способ создания потока файлов - это

fin  = openFileOutput("file2.txt", Context.MODE_PRIVATE); // open for writing
fout = openFileInput("file2.txt", Context.MODE_PRIVATE);  // open for reading 

, который найдет файл в вашей области хранения для вашего приложения, который обычно имеет вид

/data/data/com.yourpackagename/files/...

Вы все еще можете создавать каталоги в своей области приложений, если вам, конечно, нужна структура каталогов.

Если вам нужно выполнить запись во внешнее хранилище, это другой процесс, для получения дополнительной информации см. Хранение данных Android

0 голосов
/ 06 сентября 2011

Извините за все, что вы пытались помочь мне, я задал неправильный вопрос. Я хотел использовать внутреннюю память (и теперь она работает). Я не знаю, в чем проблема, но с приведенным ниже кодом (который я часто использовал) filewrite - это нормально:

try {
    File root = Environment.getExternalStorageDirectory();
    File file = new File(root, "Data.txt");
    if (root.canWrite()) {
        FileWriter filewriter = new FileWriter(file, true);
        BufferedWriter out = new BufferedWriterfilewriter);
        out.write(intoarray);
        out.close();
    }
} catch (IOException e) {
    Log.e("TAG", "Could not write file " + e.getMessage());
}

Я бы удалил тему, если бы мог. Я принимаю этот ответ, чтобы закрыть тему.

Спасибо, в любом случае.

0 голосов
/ 26 июля 2011

Скорее всего,

f1 = new FileOutputStream("file2.txt");

не удалось, и поскольку вы поймали исключение, f1 остался нулевым.В большинстве случаев в Android вы можете создавать файлы только в каталоге данных вашего приложения или во внешнем хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...