У меня проблемы с чтением файлов.Я буду не хватать слов.Когда пользователь нажимает 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:
Я также попробовал это:
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, записываю в файл, закрываю и затем снова открываю приложение, этот второй элемент неверен, но первый - в порядке.Я боролся с этим уже несколько дней ...