Уже попытка 60 где то, помогите )
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
List<String> data = new ArrayList<>();
int id = 0;
String productName = null;
double price = 0;
int quantity = 0;
id = Integer.parseInt(args[1]);
if (args.length > 2) {
productName = args[2];
price = Double.parseDouble(args[3]);
quantity = Integer.parseInt(args[4]);
}
if (args.length != 0) {
InputStream inputStream = new FileInputStream(fileName);
BufferedReader fileReader = new BufferedReader(new InputStreamReader(inputStream));
while (fileReader.ready()) {
String fileString = fileReader.readLine();
if (!fileString.equals("")) {
String newString = fileString.replace((char) 65279, ' ');
data.add(newString);
int currentID = Integer.parseInt(newString.substring(0, 8).trim());
if (currentID == id) {
if ("-u".equals(args[0])) {
String formattedString = String.format("%n%-8d%-30s%-8.2f%-4d", id, productName, price, quantity);
for (int i = 0; i < data.size(); i++) {
if (data.get(i).equals(fileString)) data.set(i, formattedString);
}
} else if ("-d".equals(args[0])) {
for (int i = 0; i < data.size(); i++) {
if (data.get(i).equals(fileString)) {
data.set(i, "");
}
}
}
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)));
for (String str : data) {
writer.write(str);
writer.newLine();
}
writer.close();
inputStream.close();
fileReader.close();
break;
}
}
}
}
reader.close();
}
}

Вижу, что получается пустая строка + в ряде случаев в начале делается отступ из-за замещения символа кодировки