блин ребята или я тупой или валидатор хреновый , ну что не так????
проверял и на локалке изменив адреса к файлам, попробовал через CMD ну всё работает идеально. где поток у него не закрыт я не пойму? почему он пишет не выполняет задачи если всё пучком? уже хочется бросить эту учёбу
одновременно к вам вопрос как будет правьлинее(скорости, употребления ресурса память) менять данные в файле через спомогательный файл или через ArrayList<> ?
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
/* args = new String[5];
args[0] = "-d";
args[1] = "4";
args[2] = "schibat pe o linie noua";
args[3] = "254.56";
args[4] = "32.5";*/
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
writeToFile(fileName, args);
reader.close();
}
public static void writeToFile(String fileName, String[] args) throws Exception {
if (args.length == 0) {
return;
}
switch (args[0]) {
case "-u": {
changeDataInFile(fileName, args);
break;
}
case "-d": {
deleteLineFromFile(fileName, args);
break;
}
}
}
public static void changeDataInFile(String fileName, String[] args) throws Exception {
File file = new File(fileName);
File tempFile = new File("tempFile.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter outStream = new BufferedWriter(new FileWriter(tempFile, true));
StringBuilder s1 = new StringBuilder();
for (int i = 2; i < args.length - 2; i++) {
s1.append(args[i]).append(" ");
}
String s;
while ((s = reader.readLine()) != null) {
int m = Integer.parseInt(s.substring(0, 8).trim());
if (m == Integer.parseInt(args[1])) {
String line = String.format("%-8.8s%-30.30s%-8.8s%-4.4s", m, s1, args[args.length - 2], args[args.length - 1]);
outStream.write(line + System.lineSeparator());
} else {
outStream.write(s + System.lineSeparator());
}
}
reader.close();
outStream.close();
file.delete();
tempFile.renameTo(file);
}
public static void deleteLineFromFile(String fileName, String[] args) throws Exception {
File file = new File(fileName);
File tempFile = new File("tempFile.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter outStream = new BufferedWriter(new FileWriter(tempFile, true));
String s;
while ((s = reader.readLine()) != null) {
int m = Integer.parseInt(s.substring(0, 8).trim());
if (m == Integer.parseInt(args[1])) continue;
outStream.write(s + System.lineSeparator());
}
reader.close();
outStream.close();
file.delete();
tempFile.renameTo(file);
}
}