Как под капотом работает readAllLines класса Files? И есть ли практическая разница - сделать как у меня или же сделать while(reader.nextLine() != null)?
package com.javarush.task.task17.task1721;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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) {
Solution solution = new Solution();
try{
solution.readDataFromFile(solution.readFileName(),
solution.readFileName());
solution.joinData();
} catch (CorruptedDataException e){
System.err.println("Data is corrupted");
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
public void joinData() throws CorruptedDataException {
if(allLines.containsAll(forRemoveLines)){
allLines.removeAll(forRemoveLines);
} else {
allLines.clear();
throw new CorruptedDataException();
}
}
public void readDataFromFile(String firstFilePath,String secondFilePath) throws IOException {
allLines = Files.readAllLines(Paths.get(firstFilePath), Charset.defaultCharset());
forRemoveLines = Files.readAllLines(Paths.get(secondFilePath), Charset.defaultCharset());
}
public String readFileName() throws IOException{
return new BufferedReader(new InputStreamReader(System.in)).readLine();
}
}