Проблема чтения файлов Android - PullRequest
0 голосов
/ 15 марта 2011

У меня проблемы с чтением файлов.Я буду не хватать слов.Когда пользователь нажимает OK, btn добавляется строка в assignArr ArrayList.В настоящее время эта строка сохраняется в файл.Когда пользователь добавляет новую строку (нажав OK btn) в Arraylist, в ней присутствуют только первый и новый элементы, поэтому дублирование отсутствует.Вот как я сохраняю arraylist в слушателе okbtn в файл:

    if (assignArr.size() > 0)
                  {
                    String filename = "tomato35.txt"; 
                     FileOutputStream fos; 
                    try { 
                        fos = openFileOutput(filename,Context.MODE_PRIVATE); 
                        ObjectOutputStream out = new ObjectOutputStream(fos); 
                        fos.flush();

                        for (int t=0; t<assignArr.size(); t++)
                        {
                            out.writeUTF(assignArr.get(t).toString() + "\n");
                            Toast.makeText(MainActivity.this, "Saving OK + " + assignArr.get(t), Toast.LENGTH_LONG).show();
                        }

                        out.close(); 
                        } catch (FileNotFoundException e) { 
                           // TODO Auto-generated catch block 
                           e.printStackTrace(); 
                        } catch (IOException e) { 
                           // TODO Auto-generated catch block 
                           e.printStackTrace(); 
                        }
                      Toast.makeText(MainActivity.this, "assignArrsize: " + assignArr.size(), Toast.LENGTH_LONG).show();
                  } 

Предположим, я добавил строку "Daddy Alex".Таким образом, выводом этого является «Saving OK + Daddy Alex», который является элементом в assignArr.Теперь я закрываю приложение, поэтому ArrayList assignArr становится пустым, поскольку это только переменная.Теперь я снова открываю свое приложение, и теперь содержимое файла должно быть прочитано в массив:

try { 
               InputStream is = openFileInput("tomato35.txt");               
               BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
               String line; 
               String NL = System.getProperty("line.separator");                  
               while((line = br.readLine()) != null) 
               {
                      assignArr.add(line); 
               } 
               is.close(); 

               } 
               catch (IOException e) 
               { 
                  e.printStackTrace(); 
               } 
                for (int i=0; i<assignArr.size(); i++)
                {
                     Toast.makeText(MainActivity.this, "AssignArr." + i + " = " + assignArr.get(i), Toast.LENGTH_LONG).show();
                }

Я публикую некоторые результаты, основанные на различных строках в assignArr: enter image description here

Я также попробовал это:

String filename = "tomato35.txt"; 
BufferedWriter bw = null;
bw = new BufferedWriter(new FileWriter(filename, true));
for (int t=0; t<assignArr.size(); t++)
{
bw.write(assignArr.get(t).toString() + "\n");
Toast.makeText(MainActivity.this, "Saving OK + " + assignArr.get(t), Toast.LENGTH_LONG).show();
}
bw.flush();

и

PrintWriter f;
File file ;
file = new File("tomato44.txt");
f = new PrintWriter(file);
for (int t=0; t<assignArr.size(); t++)
{
f.println(assignArr.get(t).toString());
 Toast.makeText(MainActivity.this, "Saving OK + " + assignArr.get(t), Toast.LENGTH_LONG).show();
}
f.close();

Но в этих случаях я даже не получаю сообщение о тосте ...

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

1 Ответ

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

Убедитесь, что у вас есть это в манифесте:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...