Пробовал все варианты, валидатор не принимает.
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
File file = new File(new Scanner(System.in).nextLine());
if (args.length == 0) {
return;
}
int lineNumber = 0;
try {
BufferedReader r = new BufferedReader(new FileReader(file));
int counter = 0;
while (r.ready()) {
StringBuilder id = new StringBuilder();
for (int i = 0; i < 8; i++) {
char c = (char) r.read();
if (!Character.isSpaceChar(c)) {
id.append(c);
}
}
if (Integer.parseInt(id.toString()) == Integer.parseInt(args[1])) {
lineNumber = counter;
break;
} else {
r.readLine();
}
counter++;
}
r.close();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(new FileReader(file));
StringBuilder text = new StringBuilder();
int counter = 0;
while (reader.ready()) {
if (counter != lineNumber) {
String line = reader.readLine();
text.append(String.format("%-50s", line)).append("\n");
} else {
if (args[0].equals("-u")) {
if (args[2].length() > 30) args[2] = args[2].substring(0, 30);
if (args[3].length() > 8) args[3] = args[3].substring(0, 8);
if (args[4].length() > 4) args[4] = args[4].substring(0, 4);
text.append(String.format("%-8s%-30s%-8s%-4s\n", args[1], args[2], args[3], args[4]));
}
reader.readLine();
}
counter++;
}
reader.close();
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(text.toString());
writer.close();
}
}