По третьему пункту не проходит, чтоб его.
Хотя, по сути, 4 пункт аналогичный алгоритм проходит, за исключением замены строки.
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.nio.file.Files;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename = reader.readLine();
String id = args[ 1 ];
String idpre;
ArrayList<String> list = new ArrayList<>();
String lines = "";
if (args.length != 0)
switch (args[0]) {
case "-u": {
BufferedReader reader1 = new BufferedReader(new FileReader(filename));
while (reader1.ready()) {
lines = reader1.readLine();
idpre = lines.substring(0, 8).trim();
if (!id.equals(idpre)) {
list.add(lines);
} else if (id.equals(idpre)){
list.add(String.format("%-8s%-30.30s%-8.8s%-4.4s", idpre, args[2], args[3], args[4]));
}
}
reader1.close();
BufferedWriter writer = new BufferedWriter(new FileWriter(filename,true));
for (String array : list
) {
writer.write(array);
writer.newLine();
}
writer.close();
}
case "-d": {
BufferedReader reader1 = new BufferedReader(new FileReader(filename));
while (reader1.ready()) {
lines = reader1.readLine();
idpre = lines.substring(0, 8).trim();
if (!id.equals(idpre)) {
list.add(lines);
}
}
reader1.close();
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
for (String array : list
) {
writer.write(array);
writer.newLine();
}
writer.close();
}
}
}
}