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);
- /*-----------------------------------------------------------*/
- for (Iterator<String> iterator1 = fileOneList.iterator(); iterator1.hasNext();)
- {
- String temp1 = iterator1.next();
- for (Iterator<String> iterator2 = fileTwoList.iterator(); iterator2.hasNext();)
- {
- String temp2 = iterator2.next();
- if (temp1.equals(temp2))/*если одинаковые строчки*/
- {
- lines.add(new LineItem(Type.SAME,temp1));
- iterator1.remove();
- iterator2.remove();
- break;
- }
- else
- {
- if (!(fileTwoList.contains(temp1)))
- {
- lines.add(new LineItem(Type.REMOVED,temp1));
- iterator1.remove();
- break;
- }
- else
- {
- lines.add(new LineItem(Type.ADDED,temp2));
- iterator2.remove();
- //break;
- }
- }
- }
- }
- if (!(fileOneList.isEmpty())) {
- for (String s : fileOneList) {
- lines.add(new LineItem(Type.REMOVED,s));
- }
- }
- if (!(fileTwoList.isEmpty())) {
- for (String s : fileTwoList) {
- lines.add(new LineItem(Type.ADDED,s));
- }
- }
- /*-----------------------------------------------------------*/
- 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