package com.javarush.task.task18.task1819;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
Объединение файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name1 = reader.readLine();
String name2 = reader.readLine();
FileReader fileReader1 = new FileReader(name1);//поток чтения для первого файла
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
while(fileReader1.ready()) {
list2.add(fileReader1.read());
}
fileReader1.close();
FileWriter fileWriter = new FileWriter(name1);//поток записи для первого файла
FileReader fileReader2 = new FileReader(name2);//поток чтения для второго файла
while(fileReader2.ready()) {
list1.add(fileReader2.read());
}
fileReader2.close();
for (int i=0; i<list2.size(); i++) {
list1.add(list2.get(i));
}
for (int i=0; i<list1.size(); i++) {
fileWriter.write(list1.get(i));
}
fileWriter.close();
}
}
Все хорошо работает, но я не понимаю почему при записи значений списка в первый файл, он оказывается пустым и все проходит. Ведь по сути в нем есть его данные, но их почему-то нет.
Oleg Raytsev
35 уровень
Почему первый файл пустой?
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Артем Тимонин
29 мая 2022, 04:25
Потому что объект FileWriter (FileWriter fileWriter = new FileWriter(name1);), созданный конструктором без передачи вторым параметром значения true, будет перезаписывать файл, а не добавлять новые строки.
Второй параметр конструктора как раз отвечает за необходимость добавлять новые строки в конец файла и не перезаписывать весь файл каждый раз новыми значениями.
То есть нужно записать вот так:
FileWriter fileWriter = new FileWriter(name1, true);
0