Всё проверил, хорошо работает при любых условиях, сначала думал, что из-за лишнего "\r\n" в конце, но даже это учёл и не принимает. Ругается даже на не закрытые потоки, хотя все закрыты. Подскажите что не так.
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
if(args.length != 0){
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
if(args[0].equals("-u")){
update(fileName, args);
} else if(args[0].equals("-d")) delete(fileName,String.format("%-8s",args[1]));
}
}
public static void delete(String fileName, String id) throws IOException{
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
FileOutputStream tempFile = new FileOutputStream("C:/tempFile.txt");
String line;
while((line = fileReader.readLine()) != null){
if(!line.startsWith(id)){
String foLine = line + "\r\n";
tempFile.write(foLine.getBytes());
}
}
fileReader.close();
tempFile.close();
BufferedReader fileReader2 = new BufferedReader(new FileReader("C:/tempFile.txt"));
String line2 = fileReader2.readLine();
FileOutputStream fo = new FileOutputStream(fileName);
String str ="";
while(line2 != null){
if(fileReader2.ready()) str = line2 + "\r\n"; else str = line2;
fo.write(str.getBytes());
line2 = fileReader2.readLine();
}
fileReader2.close();
fo.close();
}
public static void update(String fileName, String[] arguments) throws IOException{
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
FileOutputStream tempFile = new FileOutputStream("C:/tempFile.txt");
String line;
while((line = fileReader.readLine()) != null){
if(line.startsWith(arguments[1])){
String id2 = String.format("%-8s", arguments[1]);
String productName = String.format("%-30s", arguments[2]);
String price = String.format("%-8s", arguments[3]);
String quantity = String.format("%-4s", arguments[4]);
String str = id2 + productName + price + quantity + "\r\n";
tempFile.write(str.getBytes());
} else{
String str = line + "\r\n";
tempFile.write(str.getBytes());
}
}
fileReader.close();
tempFile.close();
BufferedReader fileReader2 = new BufferedReader(new FileReader("C:/tempFile.txt"));
FileOutputStream fo = new FileOutputStream(fileName);
String line2;
String str = "";
while((line2 = fileReader2.readLine()) != null){
if(fileReader2.ready()) str = line2 + "\r\n"; else str = line2;
fo.write(str.getBytes());
}
fileReader2.close();
fo.close();
}
}