Прошу подсказать, что не нравится валидатору.
Говорит, что не работает ни удаление ни обновление.
Но больше всего поразил последний пункт проверки: "Поток чтения из файла не был закрыт."
Хотя используется конструкция try with resources.
Спасибо
package com.javarush.task.task18.task1828;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Cortege {
private String id, productName, price, quantity;
private String mode;
public Cortege(String mode, String id) {
this.mode = mode;
this.id = id.trim();
}
public String getCortege() {
return String.format("%-8.8s", getId()) +
String.format("%-30.30s", getProductName()) +
String.format("%-8.8s", getPrice()) +
String.format("%-4.4s", getQuantity());
}
public Cortege(String mode, String id, String productName, String price, String quantity) {
this.mode = mode;
this.id = id.trim();
this.productName = productName.trim();
this.price = price.trim();
this.quantity = quantity.trim();
}
public String getMode() {
return mode;
}
public String getId() {
return id;
}
public String getProductName() {
return productName;
}
public String getPrice() {
return price;
}
public String getQuantity() {
return quantity;
}
public void processFile(String fileName) {
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))
){
String line;
StringBuffer buffer = new StringBuffer();
boolean foundId = false;
while ((line = reader.readLine()) != null ) {
if (line.substring(0, 8).trim().equals(getId())) {
foundId = true;
if (getMode().equals("-u")) {line = getCortege();}
if (getMode().equals("-d")) {line = "";}
}
if (!line.isEmpty() && !line.equals("\r\n")) {
if (buffer.length() > 0) {buffer.append("\r\n");}
buffer.append(line);
}
}
if (foundId) {
FileWriter fWriter = new FileWriter(fileName);
fWriter.write(buffer.toString());
fWriter.close();
}
} catch (IOException e) {e.printStackTrace();}
}
}