При проведении теста нужная строка удаляется. Но валидатору что-то не нравится. В чем может быть загвоздка? Претензии только к варианту с параметром -d.
import java.io.*;
import java.util.List;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException, FileNotFoundException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fName = reader.readLine();
String id = args[1];
String q=args[4];
String prName = args[2];
String price = args[3];
String mode=args[0];
switch (mode) {
case "-u" :
update(id, prName, price, q, fName);
break;
case "-d" :
delete(id, fName);
break;
}
reader.close();
}
public static void update(String id, String prName, String price, String q, String fName) throws IOException, FileNotFoundException {
while (prName.length()<30) {
prName+=" ";
}
while (id.length()<8) {
id+=" ";
}
while (price.length()<8) {
price+=" ";
}
while (q.length()<4) {
q+=" ";
}
FileInputStream freader = new FileInputStream(fName);
BufferedReader reader = new BufferedReader(new InputStreamReader(freader));
//Создаем набор "нужных" строк для файла
List< String> data = new ArrayList< String>();
String str="";
while ((str=reader.readLine())!=null) {
String idRead=str.substring(0,8);
if (!id.equals(idRead)) {
str+="\r\n";
data.add(str);
} else {
str=id+prName+price+q+"\r\n";
data.add(str);
}
}
freader.close();
reader.close();
//Перезаписываем полученные строки в файл
FileOutputStream fwriter = new FileOutputStream(fName);
for (int i=0; i<data.size();i++) {
fwriter.write(data.get(i).getBytes());
}
fwriter.close();
}
private static void delete(String id, String fName) throws IOException, FileNotFoundException {
FileInputStream freader = new FileInputStream(fName);
BufferedReader reader = new BufferedReader(new InputStreamReader(freader));
//Записываем в список все строки из файла, кроме удаляемой
String str="";
List<String> data = new ArrayList< String>();
while ((str=reader.readLine())!=null) {
String idRead=str.substring(0,8);
if (!id.equals(idRead.trim())) {
data.add(str);
}
}
freader.close();
reader.close();
//Записываем в файл все строки, кроме удаленной
FileOutputStream fwriter = new FileOutputStream(fName);
for (int i =0; i<data.size();i++) {
if (i != (data.size()-1)) {
str=data.get(i)+"\r\n";
} else {
str=data.get(i);
}
fwriter.write(str.getBytes());
}
fwriter.close();
}