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.InputStreamReader;
- import java.util.ArrayList;
- 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
- ----------------------------------------------
- ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
- 1. Первый файл сравниваем со вторым
- (в примере, список(объедененный) содержит все линии из первого файла)
- и в зависимости от того есть ли этот элемент во втором файле добавляет
- один из вариантов ADDED SAME REMOVED.
- SAME может идти подряд
- ----------------------------------------------
- d:\Test_files\Input.txt
- d:\Test_files\Output.txt
- */
- 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();
- BufferedReader fileReader1 = new BufferedReader(new FileReader(fileName1));
- BufferedReader fileReader2 = new BufferedReader(new FileReader(fileName2));
- String fileLine1="";
- String fileLine2="";
- boolean stopShitting = false;
- while (!stopShitting) {
- //while ((fileLine1=fileReader1.readLine())!=null) {
- try
- {
- while ((fileLine1=fileReader1.readLine())!=null ) {
- fileLine2=fileReader2.readLine();
- if (fileLine1.equals(fileLine2)) {
- lines.add(new LineItem(Type.SAME,fileLine1));
- }
- else {
- lines.add(new LineItem(Type.REMOVED,fileLine1));
- }
- stopShitting=true;
- }
- } catch (Exception e) {
- lines.add(new LineItem(Type.ADDED,fileLine1));
- }
- }
- fileReader1.close();
- } catch (Exception e) {}
- for (LineItem lineItem : lines) {
- System.out.println(lineItem.getType()+" " + lineItem.getLine());
- }
- }
- 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 Type getType () {
- return this.type;
- }
- public String getLine () {
- return this.line;
- }
- }
- }
- /*
- line1
- line2
- line3
- line4
- line5
- line0
- line1
- line2
- line3
- line5
- line4
- line5
- */
- //-------------------------
- /*
- line1
- line3
- line5
- line1
- line3
- line4
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement