Все работает, проверил вдоль и поперек, рассчитывал с первой попытки закрыть и вот те раз)
Ошибка в файле com/javarush/task/task18/task1828/Solution.java в строке : 101
Не найден метод "of(java.lang.String)" в интерфейсе "java.nio.file.Path"
Гуглил, в основном дает ссылки на javarush, но после перехода по ним выдает ошибку поиска вопроса.
package com.javarush.task.task18.task1828;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Прайсы 2
*/
public class Solution {
int id;
String productName;
double price;
int quantity;
public static void main(String[] args) throws Exception {
// String fileRoad =
// "/Users/OlegChilikin/JavaRushTask/JavaRushTasks/2.JavaCore/src/com/javarush/task/task18/task1827/test";
// InputStream inputStream = new ByteArrayInputStream(fileRoad.getBytes());
// System.setIn(inputStream);
// inputStream.close();
BufferedReader readerFileName = new BufferedReader(new InputStreamReader(System.in));
String fileName = readerFileName.readLine();
readerFileName.close();
String allArgs = "";
for (String s : args) {
allArgs += s;
}
// System.out.println(allArgs);
if (!allArgs.equals("")) {
Solution solution = new Solution();
if (args[0].equals("-u"))
solution.withParamU(allArgs, fileName);
if (args[0].equals("-d"))
solution.withParamD(allArgs, fileName);
}
}
public void withParamU(String allArgs, String fileName) throws IOException {
String idString = "";
String priceString = "";
String quantityString = "";
allArgs = allArgs.substring(2); //избавились от префикса
Pattern pattern = Pattern.compile("^\\d{1,8}");
Matcher matcher = pattern.matcher(allArgs);
while(matcher.find()){
idString = matcher.group();
allArgs = allArgs.substring(matcher.end());
}
id = Integer.parseInt(idString);
pattern =Pattern.compile("\\D{1,30}");
matcher =pattern.matcher(allArgs);
while(matcher.find()){
productName = matcher.group();
allArgs = allArgs.substring(matcher.end());
break;
}
pattern =Pattern.compile("^\\d{1,6}+[.]+\\d{2}");
matcher =pattern.matcher(allArgs);
while(matcher.find()){
priceString = matcher.group();
allArgs = allArgs.substring(matcher.end());
}
price = Double.parseDouble(priceString);
quantityString =allArgs;
quantity = Integer.parseInt(quantityString);
String formattedPrice = String.format("%.2f", price);
String finalStringToWrite =
toStandartWrite(String.valueOf(id), 8)
+ toStandartWrite(productName, 30)
+ toStandartWrite(formattedPrice, 8)
+ toStandartWrite(String.valueOf(quantity), 4);
// System.out.println(finalStringToWrite);
List<String> fileContent = new ArrayList<>(Files.readAllLines(Path.of(fileName), StandardCharsets.UTF_8));
pattern = Pattern.compile("^" + String.valueOf(id) + ".*");
for (int i = 0; i < fileContent.size(); i++) {
if (pattern.matcher(fileContent.get(i)).find()){
// System.out.println(fileContent.get(i));
fileContent.set(i, finalStringToWrite);
break;
}
}
Files.write(Path.of(fileName), fileContent, StandardCharsets.UTF_8);
}
public void withParamD(String allArgs, String fileName) throws IOException {
String idString = "";
allArgs = allArgs.substring(2); //избавились от префикса
Pattern pattern = Pattern.compile("^\\d{1,8}");
Matcher matcher = pattern.matcher(allArgs);
while(matcher.find()){
idString = matcher.group();
allArgs = allArgs.substring(matcher.end());
}
id = Integer.parseInt(idString);
List<String> fileContent = new ArrayList<>(Files.readAllLines(Path.of(fileName), StandardCharsets.UTF_8));
pattern = Pattern.compile("^" + String.valueOf(id) + ".*");
for (int i = 0; i < fileContent.size(); i++) {
if (pattern.matcher(fileContent.get(i)).find()){
fileContent.remove(i);
break;
}
}
Files.write(Path.of(fileName), fileContent, StandardCharsets.UTF_8);
}
public static String toStandartWrite(String value, int lenght){
while (value.length() < lenght){
value+=" ";
}
return value;
}
}
//19846Шортыпляжныесиние159.0012
// BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
// pattern = Pattern.compile("^" + String.valueOf(id) + ".*");
// String buffer = "";
// while ((buffer = fileReader.readLine()) != null){
// matcher = pattern.matcher(buffer);
// while (matcher.find()){
// matcher.group().replaceAll(matcher.group(), finalStringToWrite);
// }
// }
// fileReader.close();
// System.out.print("ID: " + id + "\nProduct name: "
// + productName + "\nPrice: " + price + "\nQuantity: " + quantity);
// try(BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true)))
// {
// String formattedPrice = String.format("%.2f", price);
// writer.write("\n" + toStandartWrite(String.valueOf(id), 8)
// + toStandartWrite(productName, 30)
// + toStandartWrite(formattedPrice, 8)
// + toStandartWrite(String.valueOf(quantity), 4));
// writer.flush();
// }
// catch(IOException ex){
//
// System.out.println(ex.getMessage());
// }
// public void withOutParamC(String allArgs){
//
// String idString = "";
// String priceString = "";
// String quantityString = "";
//
// Pattern pattern = Pattern.compile("^\\d{1,8}");
// Matcher matcher = pattern.matcher(allArgs);
// while(matcher.find()){
// idString = matcher.group();
// allArgs = allArgs.substring(matcher.end());
// }
//
// pattern =Pattern.compile("\\D{1,30}");
// matcher =pattern.matcher(allArgs);
// while(matcher.find()){
// productName = matcher.group();
// allArgs = allArgs.substring(matcher.end());
// break;
// }
//
// pattern =Pattern.compile("^\\d{1,6}+[.]+\\d{2}");
// matcher =pattern.matcher(allArgs);
// while(matcher.find()){
// priceString = matcher.group();
// allArgs = allArgs.substring(matcher.end());
// }
//
// quantityString =allArgs;
//
// id = Integer.parseInt(idString);
// price = Double.parseDouble(priceString);
// quantity = Integer.parseInt(quantityString);
//
// System.out.print("ID: " + id + "\nProduct name: "
// + productName + "\nPrice: " + price + "\nQuantity: " + quantity);
// }