Сделать метод joinData транзакционным, т.е. если произошел сбой, то данные не должны быть изменены.
1. Считать с консоли 2 имени файла.
2. Считать построчно данные из файлов. Из первого файла - в allLines, из второго - в forRemoveLines.
В методе joinData:
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines.
4. Если условие из п.3 не выполнено, то:
4.1. очистить allLines от данных
4.2. выбросить исключение CorruptedDataException
Метод joinData должен вызываться в main. Все исключения обработайте в методе main.
Не забудь закрыть потоки.
package com.javarush.task.task17.task1721;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
/*
Транзакционность
*/
public class Solution {
public static List<String> allLines = new ArrayList<String>();
public static List<String> forRemoveLines = new ArrayList<String>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file_1 = reader.readLine();
String file_2 = reader.readLine();
allLines = Files.readAllLines(Paths.get(reader.readLine()));
forRemoveLines = Files.readAllLines(Paths.get(reader.readLine()));
reader.close();
new Solution().joinData();
}
public void joinData() throws CorruptedDataException {
if (allLines.containsAll(forRemoveLines)) {
allLines.removeAll(forRemoveLines);
} else {
allLines.clear();
throw new CorruptedDataException();
}
}
}