Снова обновил код в описании. Также не принимает
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String name = reader.readLine(); reader.close();
//args = new String[]{"-u", "78454916", "Строка для замены!!! Брюки Синие В Полоску", "279.99", "2531"}; String name = "D:\\JavaRushTasks\\product.txt";
//args = new String[] {"-d", "78454916"}; String name = "D:\\JavaRushTasks\\product.txt";
LinkedHashMap<String, String> map = new LinkedHashMap<>();
if (args.length != 0) {
FileInputStream inName = new FileInputStream(name);
BufferedReader br = new BufferedReader(new InputStreamReader(inName, "UTF-8"));
String strLine;
while ((strLine = br.readLine()) != null) {
map.put(strLine.substring(0,8), strLine.substring(8));
}
inName.close();br.close(); reader.close();
if (args[0].equals("-u")) {
String newStr= formText(args[2], 30) + formText(args[3], 8) + formText(args[4], 4);
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if (format("%-8s", args[1].substring(0, 8)).equals(key)) {
map.put(key, newStr);
}
System.out.println(key + value);
}
writeToFile(name, map);
}
if (args[0].equals("-d")) {
Iterator<Map.Entry<String, String>> entryIterator = map.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry<String, String> entry = entryIterator.next();
String key = entry.getKey();
if (format("%-8s", args[1].substring(0, 8)).equals(key)) {
entryIterator.remove();
}
}
writeToFile(name, map);
}
}
}
public static void writeToFile(String name, LinkedHashMap<String, String> map) throws IOException {
BufferedWriter bW = new BufferedWriter(new FileWriter(name));
for(HashMap.Entry<String, String> entry: map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
bW.write(key + value + "\n" );
}
bW.close();
}
private static String formText(String name, int len) {
if (name.length() < len) {
return String.format("%1$-" + len + "s", name);
} else {
return name.substring(0, len);
}
}
}
package com.javarush.task.task18.task1828;/*Прайсы 2*/import java.io.*;import java.lang.*;import java.util.*;import static java.lang.String.format;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine(); reader.close();
if (args.length != 0) {
FileInputStream inName = new FileInputStream(name);
BufferedReader br = new BufferedReader(new InputStreamReader(inName, "UTF-8"));
ArrayList<String> idStringList = new ArrayList<>(); int i;
String str = "";
while ((i = br.read()) != -1) {
if (str.length() < 50) {
str = str.concat(String.valueOf((char) i));
} else {
idStringList.add(str + " "); str = "";
}
}
inName.close(); br.close(); reader.close();
HashMap<String, String> map = new HashMap<>();
for (String ar : idStringList) {
if(!ar.equals("")) {
String key = ar.replaceAll("\n|\r\n", "").substring(0, 8);
String value = ar.replaceAll("\n|\r\n", "").substring(8);
map.put(key, value);
}
}
String idProductStr = format("%-8s", args[1]);
String newStr = String.format("%-30s", args[2].substring(0, 30)) + String.format("%-8s", args[3]) + String.format("%-4s", args[4]);
StringBuilder writeBuilder = new StringBuilder();
FileOutputStream fos = new FileOutputStream(name);
BufferedOutputStream bos = new BufferedOutputStream(fos);
if(args[0].equals("-u")) {
map.forEach((key, value) -> {
if (idProductStr.equals(key)) {
map.put(idProductStr, newStr);
}
});
try {
for(HashMap.Entry<String, String> entry: map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
writeBuilder.append(key).append(value).append("\n");
}
bos.write(writeBuilder.toString().getBytes());
bos.close();
} catch (IOException e) {e.getStackTrace();}
}
if(args[0].equals("-d")) {
Iterator<Map.Entry<String, String>> entryIterator = map.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry<String, String> entry = entryIterator.next();
String key = entry.getKey();
if (idProductStr.equals(key)) {
entryIterator.remove();
}
}
}
try {
for(HashMap.Entry<String, String> entry: map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
writeBuilder.append(key).append(value).append("\n");
}
bos.write("".getBytes());
bos.write(writeBuilder.toString().getBytes());
bos.close();
} catch (IOException e) { e.getStackTrace(); }
}
}
}