BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
reader.close();
FileReader fileReader = new FileReader(s);
BufferedReader bufferedReader = new BufferedReader(fileReader);
FileWriter fileWriter = new FileWriter(s);
List<String> strings = new ArrayList<>();
while (bufferedReader.ready()) {
String string = bufferedReader.readLine();
strings.add(string);
}
Почему этот код затирает все данные в файле и ничего не добавляет в лист, а если закоментить 6 строку - все нормально работает?
Мои предположения что виноват String pool, хотя в bufferedReader передается корректное имя FileReader'a.
А FileWriter пока вообще не используется.
Неужели bufferedReader думает, что ему передали имя FileWriter'a и начинает записывать данные вместо чтения с FileReader'a хотя он же не bufferedWriter?
Или я не должен создавать FileWriter пока он не нужен?Питруха
1 уровень
Почему?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ЭндерПосол с красной планеты в четвёртом измерении
15 ноября 2020, 07:01полезный
Попробую использовать конструктор:
В твоём случае: Второй аргумент "true" означает, что нужно добавлять символы в конец файла, а не в начало (так происходит по умолчанию, поэтому всё и затирается)
Или же попробую работать с дополнительным файлом
+3
espress0
15 ноября 2020, 06:58решение
У Вас FileWriter работает с файлом с таким же названием как и FileReader .
Когда открываем файл для записи, он вытирается.
А Вы из него еще не прочитали.
+2
Питруха
15 ноября 2020, 07:47
Большое спасибо! Сам бы не додумался!😄
0