Люди добрые, посмотрите.
В очередной раз работа не принимается валидатором, хотя вроде все работает. Но может я не учел или не исправил что-то существенное. Поэтому прошу помощи/совета...
package com.javarush.task.task18.task1828;
/*
Прайсы 2
C:\Users\Анастасия\Desktop\Антошино\JavaКаждыйДень\Файлыдлятренировок\Текстовый файл.txt
//C:\\Users\\Анастасия\\Desktop\\Антошино\\JavaКаждыйДень\\Файлыдлятренировок\\Текстовый файл.txt;
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
if ( args.length != 0 ) {
ArrayList<String> list = fillLinesList(fileName);
ArrayList<String> newList = null;
FileOutputStream fileClean = new FileOutputStream(fileName);
switch ( args[0] ) {
case ("-d"):
newList = replaceLine(list, args[1], "");
break;
case ("-u"):
String line = args[2];
for (int i = 3; i < args.length - 2; i++) {
String arg = args[i];
line = line + " " + arg;
}
line = ( line.length() < 30 ) ? line + addSpaceToValue( 30 - args[2].length()) : line.substring(0, 30);
line = ( args[args.length - 2].length() < 8 ) ? line + args[args.length - 2] + addSpaceToValue( 8 - args[args.length - 2].length()) : line + args[args.length - 2].substring(0, 8);
line = ( args[args.length - 1].length() < 4 ) ? line + args[args.length - 1] + addSpaceToValue( 4 - args[args.length - 1].length()) : line + args[args.length - 1].substring(0, 4);
newList = replaceLine(list, args[1], line);
break;
}
if ( newList != null ) {
fileClean.write(newList.get(0).getBytes());
fileClean = new FileOutputStream(fileName, true);
for (int i = 1; i < newList.size(); i++) {
fileClean.write("\r\n".getBytes());
fileClean.write(newList.get(i).getBytes());
}
}
fileClean.close();
}
}
public static ArrayList<String> fillLinesList(String fileName) throws FileNotFoundException, IOException {
ArrayList<String> list = new ArrayList<>();
File file = new File(fileName);
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
String line = reader.readLine();
while ( line != null ) {
list.add(line);
line = reader.readLine();
}
reader.close();
fileReader.close();
return list;
}
public static ArrayList<String> replaceLine(ArrayList<String> list, String newId, String newString) {
ArrayList<String> copy = new ArrayList<>();
for (String x : list) {
if ( x.substring(0,8).trim().equals(newId) ) {
if ( !newString.isEmpty() ) {
copy.add(newId + addSpaceToValue(8 - newId.length()) + newString);
}
}
else { copy.add(x); }
}
return copy;
}
public static String addSpaceToValue(int spaceNumber) {
String bigSpace = "";
for (int i = 0; i < spaceNumber; i++) {
bigSpace = bigSpace + " ";
}
return bigSpace;
}
}