У меня проблема с записью содержимого ArrayLists в файл - PullRequest
0 голосов
/ 24 июня 2019

Итак, я написал некоторый код для преподавателя словарного запаса для моего класса немецкого языка и хочу записать содержимое моих списков ArrayLists в файл.Однако при сохранении он записывает в файл только первый из 3 списков массивов.Кто-нибудь знает, что вызывает это, или еще лучше, как это исправить?Спасибо за вашу помощь!

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

Это все только последовательности кода, а не весьпрограмма.Это более 400 строк, поэтому я не хотел вставлять все это.Код работает безупречно, пока я не открою файл, в который я записал.

static ArrayList<String> vokabel = new ArrayList<String>();
static ArrayList<String> uebersetzung = new ArrayList<String>();
static ArrayList<Integer> kasten = new ArrayList<Integer>(); 

static void beenden() {
  for(int m = 0; m < groesse; m++) {
    String str = vokabel.get(m).toString();
    textWriter.write(str);
    textWriter.write(" ");
  }
  textWriter.close();
  textWriter.println();
  for(int n = 0; n < groesse; n++) {
    String str = uebersetzung.get(n).toString();
    textWriter.write(str);
    textWriter.write(" ");
  }
  textWriter.close();
  textWriter.println();
  for(int o = 0; o < groesse; o++) {
    String str = kasten.get(o).toString();
    textWriter.write(str);
    textWriter.write(" ");
  }
  textWriter.close();
  textWriter.println();

  System.exit(0);

}

Я ожидаю, что он запишет содержимое всех 3 ArrayLists в файл, хотя до сих пор он не работал.Это то, что заканчивается в файле после ввода 3 слов с их переводами и их соответствующим номером дела.Только слова сами попадают в файл:

Hund Nein Hallo

Ответы [ 3 ]

1 голос
/ 24 июня 2019

Причина, по которой он записывает в файл только первые ArrayList, заключается в том, что вы закрываете TextWriter сразу после его записи (а когда закрывается TextWriter, он ничего не пишет). Просто удалите все

textWriter.close();

строк, а затем поставьте только одну справа перед System.exit(0), и она должна работать правильно.

0 голосов
/ 24 июня 2019

Используйте Flush.with у вас текст больше, чем размер буфера, он не будет писать.

System.IO.TextWriter writeFile = new StreamWriter("c:\\textwriter.txt");
writeFile.WriteLine("csharp.net-informations.com");
writeFile.Flush();
writeFile.Close();
0 голосов
/ 24 июня 2019

Вы пишете все 3 списка один за другим.И: Между вами близкий писатель!Так что вам «повезло» не получить IOException.

Полагаю, вы хотели бы объединить записи в 3 списках (vokabel + uebersetzung + kasten).Поэтому я предлагаю вам создать класс, содержащий 3 поля с информацией.Дайте этому классу разумный toString () и просто напишите эти объекты по одной строке за раз.

Ах, и кстати: никогда не вызывайте System.exit!Это делает вашу программу непригодной для использования в более широком контексте и предотвращает надлежащую очистку ресурсов.

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