Приветствую. Вроде все работает, но не проходит пункт:
-Метод joinData должен очистить список allLines и выбросить исключение CorruptedDataException, если в allLines не содержаться все строки из списка forRemoveLines.
По моим проверкам все работает.
package com.javarush.task.task17.task1721;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
Транзакционность
Сделать метод joinData транзакционным, т.е. если произошел сбой, то данные не должны быть изменены.
1. Считать с консоли 2 имени файла.
2. Считать построчно данные из файлов. Из первого файла - в allLines, из второго - в forRemoveLines.
В методе joinData:
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines.
4. Если условие из п.3 не выполнено, то:
4.1. очистить allLines от данных
4.2. выбросить исключение CorruptedDataException
Метод joinData должен вызываться в main. Все исключения обработайте в методе main.
Не забудь закрыть потоки.
Требования:
1. Класс Solution должен содержать public static поле allLines типа List<String>.
2. Класс Solution должен содержать public static поле forRemoveLines типа List<String>.
3. Класс Solution должен содержать public void метод joinData() который может бросать исключение CorruptedDataException.
4. Программа должна считывать c консоли имена двух файлов.
5. Программа должна считывать построчно данные из первого файла в список allLines.
6. Программа должна считывать построчно данные из второго файла в список forRemoveLines.
7. Метод joinData должен удалить в списке allLines все строки из списка forRemoveLines, если в allLines содержаться все строки из списка forRemoveLines.
8. Метод joinData должен очистить список allLines и выбросить исключение CorruptedDataException, если в allLines не содержаться все строки из списка forRemoveLines.
9. Метод joinData должен вызываться в main.
*/
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) {
String name1;
String name2;
Scanner sc = new Scanner(System.in);
name1 = sc.nextLine();
name2 = sc.nextLine();
sc.close();
try {
//FileReader flReader = new FileReader("C:\\Users\\Onestee\\Desktop\\"+name1);
FileReader flReader = new FileReader(name1);
BufferedReader reader = new BufferedReader(flReader);
String symb;
while ((symb = reader.readLine()) != null) {
allLines.add(symb);
}
reader.close();
} catch (FileNotFoundException e) {
System.out.println("Файл не найден");
} catch (IOException e) {
e.printStackTrace();
}
try {
//FileReader flReader = new FileReader("C:\\Users\\Onestee\\Desktop\\"+name2);
FileReader flReader = new FileReader(name2);
BufferedReader reader = new BufferedReader(flReader);
String symb;
while ((symb = reader.readLine()) != null) {
forRemoveLines.add(symb);
}
reader.close();
} catch (FileNotFoundException e) {
System.out.println("Файл не найден");
} catch (IOException e) {
e.printStackTrace();
}
Solution sl = new Solution();
try {
sl.joinData();
System.out.println(allLines);
} catch (CorruptedDataException e) {
e.printStackTrace();
}
}
public void joinData() throws CorruptedDataException {
int count = 0;
for (int j = 0; j < forRemoveLines.size(); j++) {
for (int i = 0; i < allLines.size(); i++) {
if (forRemoveLines.get(j).equals(allLines.get(i))) {
count++;
allLines.remove(i);
}
}
}
if (count == 0) {
allLines.clear();
throw new CorruptedDataException();
}
}
}