Android написание файлов, чтение - PullRequest
0 голосов
/ 07 марта 2011

У меня есть диалог со счетчиками и кнопкой ОК.У меня также есть arraylist, который заполняется пользователем, выбирающим элементы в счетчиках.Я хочу, чтобы приложение сохраняло arraylist в файл и загружало его при каждом запуске (потому что без сохранения arraylist всегда пуст при запуске).

Итак, вот код, который я использую.Сохранение должно быть в порядке, по крайней мере, я получаю сообщение Toast с надписью Saving OK.Этот код является слушателем OKbtn, поэтому, когда пользователь нажимает кнопку ОК, в массив добавляется элемент, и появляется следующий код:

if (assignArr.size() > 0)
                      {
                        String filename = "file.txt"; 
                        ArrayList<String> report = new ArrayList<String>(); 

                        for (int i=0; i<assignArr.size(); i++)
                        {
                            report.add(assignArr.get(i)); 
                        }

                                FileOutputStream fos; 
                                                try { 
                                                        fos = openFileOutput(filename,Context.MODE_PRIVATE); 
                                        ObjectOutputStream out = new ObjectOutputStream(fos); 
                                        out.writeObject(report); 
                                        out.close(); 
                                        Toast.makeText(MainActivity.this, "Saving OK", Toast.LENGTH_LONG).show();
                                                } catch (FileNotFoundException e) { 
                                                        // TODO Auto-generated catch block 
                                                        e.printStackTrace(); 
                                                } catch (IOException e) { 
                                                        // TODO Auto-generated catch block 
                                                        e.printStackTrace(); 
                                                }
                      }  

Я помещаю загрузочную часть в начало кода, но я неНе думаю, что это имеет значение:

words = new ArrayList<String>(50);   
        try { 
        InputStream is = getResources().getAssets().open("file.txt"); 

        BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
        String line; 

        while((line = br.readLine()) != null) 
        { 
              words.add(line); 
        } 
        is.close(); 
        } 
        catch (IOException e) 
        { 
          e.printStackTrace(); 
        } 

        if (words.size() > 0)
        {
            for (int i=0; i<words.size(); i++)
            {
                assignArr.add(words.get(i));
                Toast.makeText(MainActivity.this, "Loading OK", Toast.LENGTH_LONG).show();
            }
        }

В этом случае я никогда не получаю тостовое сообщение.Одной из проблем может быть то, где файл создается?Где в эмуляторе и где на телефоне?А что касается телефона, он создается на SD-карте или в памяти телефона?Я надеюсь, что это правильный код для сохранения и загрузки архива.Что не так с кодом?

Обновление: я заменил InputStream is = getResources().getAssets().open("file.txt"); на InputStream is = openFileInput("file.txt"); Теперь что-то происходит.Я записываю результат сохранения и загрузки в сообщение о тосте, что странно:

  Toast.makeText(MainActivity.this, "Saving OK + " + report, Toast.LENGTH_LONG).show();

Пожалуйста, посмотрите на это.Слова внизу - отчасти венгерские имена.Поэтому, возможно, проблема заключается в сохранении массива в файл.

enter image description here

1 Ответ

0 голосов
/ 07 марта 2011

Файл, который вы создаете с помощью openFileOutput, записывается в личный каталог вашего приложения, который вы можете получить, используя Context#getFilesDir() (обычно это /data/data/<your-app-package>/).

Этот каталог содержитничего общего с папкой ресурсов.

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