Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.test.level19.lesson10.bonus01;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- /* Отслеживаем изменения
- Считать в консоли 2 имени файла - file1, file2.
- Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
- Нужно создать объединенную версию строк, записать их в список lines
- Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
- Пример:
- оригинальный редактированный общий
- file1: file2: результат:(lines)
- строка1 строка1 SAME строка1
- строка2 REMOVED строка2
- строка3 строка3 SAME строка3
- строка4 REMOVED строка4
- строка5 строка5 SAME строка5
- строка0 ADDED строка0
- строка1 строка1 SAME строка1
- строка2 REMOVED строка2
- строка3 строка3 SAME строка3
- строка5 ADDED строка5
- строка4 строка4 SAME строка4
- строка5 REMOVED строка5
- */
- public class Solution {
- public static List<LineItem> lines = new ArrayList<LineItem>();
- public static void main(String[] args) {
- BufferedReader readName = null;
- try
- {
- readName = new BufferedReader(new InputStreamReader(System.in));
- //String fileName1 = readName.readLine();
- String fileName1 = "d:\\Test_files\\Input.txt";
- //String fileName2 = readName.readLine();
- String fileName2 = "d:\\Test_files\\Output.txt";
- readName.close();
- ArrayList<String> fileOneList = fileToList(fileName1);
- ArrayList<String> fileTwoList = fileToList(fileName2);
- Iterator<String> iterator = null;
- Iterator<String> iteratorBase = null;
- for (iteratorBase=fileTwoList.iterator();iteratorBase.hasNext();) {
- String line = iteratorBase.next();
- for (iterator = fileTwoList.iterator(); iterator.hasNext();) {
- String string = iterator.next();
- if (string.equals(line)) {
- lines.add(new LineItem(Type.SAME, line));
- iterator.remove();
- break;
- }
- else {
- lines.add(new LineItem(Type.REMOVED,line));
- iterator.remove();
- break;
- }
- }
- }
- while (iteratorBase.hasNext()) {
- lines.add(new LineItem(Type.REMOVED,iteratorBase.next()));
- }
- while (iterator.hasNext()) {
- lines.add(new LineItem(Type.ADDED,iterator.next()));
- }
- for (LineItem li : lines){
- System.out.println(li.type+" "+li.line);
- }
- } catch (IOException e) {}
- }
- public static enum Type {
- ADDED, //добавлена новая строка
- REMOVED, //удалена строка
- SAME //без изменений
- }
- public static class LineItem {
- public Type type;
- public String line;
- public LineItem(Type type, String line) {
- this.type = type;
- this.line = line;
- }
- }
- public static ArrayList<String> fileToList (String fileName){
- ArrayList<String> linesFromFile = new ArrayList<>();
- try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
- String line;
- while ((line = br.readLine()) != null) {
- linesFromFile.add(line);
- }
- } catch (IOException e) {}
- return linesFromFile;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement