I have seen very complex solutions, I think this is a very easy way to solve the task.
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception{
if (args.length == 0){
return;
}
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String fileName = bf.readLine();
bf.close();
BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
//------------------------------------------------------------------------------------
String line = "";
switch (args[0]){
case "-u":
while ((line = bufferedReader.readLine()) != null){
String id = args[1];
if (line.startsWith(id)){
id = fillReg(args[1], 8);
String name = fillReg(args[2], 30);
String precio = fillReg(args[3], 8);
String cantidad = fillReg(args[4], 4);
String lineaEscribir = id + name + precio + cantidad;
bufferedWriter.write(lineaEscribir);
bufferedWriter.write("\n");
}else{
bufferedWriter.write(line);
bufferedWriter.write("\n");
}
}
bufferedWriter.close();
bufferedReader.close();
break;
case "-d":
while ((line = bufferedReader.readLine()) != null){
String id = args[1];
if (line.startsWith(id)){
continue;
}else{
bufferedWriter.write(line);
bufferedWriter.write("\n");
}
}
bufferedWriter.close();
bufferedReader.close();
break;
}
}
public static String fillReg (String reg, int length){
if (reg.length() >= length){
return reg;
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(reg);
while (stringBuilder.length() < length){
stringBuilder.append(' ');
}
return stringBuilder + "";
}
}