порядок действий
Обновление строки
- читаем строки и разбиваем на ключ(id) и значение
- изменяем значение по ключу
-переписываем файл согласно map
Удаление строки
- читаем строки и разбиваем на ключ(id) и значение
- по ключу удаляем в map
-переписываем файл согласно map
package com.javarush.task.task18.task1828;
import java.io.*;
import java.util.*;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length > 0) {
if (args[0].equals("-u")) {
Map<String, String> map = new HashMap<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
FileInputStream fileInputStream = new FileInputStream(name);
BufferedReader reader2 = new BufferedReader(new InputStreamReader(fileInputStream));
String s = null;
//читаем строки и разбиваем на ключ(id) и значение
while ((s = reader2.readLine()) != null) {
String sKey = s.substring(0, 8);
String sValue = s.substring(8,48);
map.put(sKey, sValue);
}
//изменяем значение по ключу
for (HashMap.Entry <String,String> pair : map.entrySet()) {
String key = pair.getKey();
if (key.equals(args[1])) {
pair.setValue(args[2] + args[3]+ args[4]);
}
}
int count = 1; //нужен для того чтобы последнию строку не делать пустой \n Смотри ниже
//переписываем файл согласно map
FileOutputStream fileOutputStream = new FileOutputStream(name);
for (HashMap.Entry <String,String> pair2 : map.entrySet()) {
if (map.size() != count) {
String str = pair2.getKey() + pair2.getValue() + "\n";
byte[] bt = str.getBytes();
fileOutputStream.write(bt);
count++;
}
else if (map.size() == count) {
String str = pair2.getKey() + pair2.getValue();
byte[] bt = str.getBytes();
fileOutputStream.write(bt);
}
}
reader.close();
fileInputStream.close();
reader2.close();
fileOutputStream.close();
}
else if (args[0].equals("-d")) {
Map<String, String> map = new HashMap<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
FileInputStream fileInputStream = new FileInputStream(name);
BufferedReader reader2 = new BufferedReader(new InputStreamReader(fileInputStream));
String s = null;
while ((s = reader2.readLine()) != null) {
String sKey = s.substring(0, 8);
String sValue = s.substring(8,48);
map.put(sKey, sValue);
}
for (HashMap.Entry <String,String> pair : map.entrySet()) {
String key = pair.getKey();
if (key.equals(args[1])) {
map.remove(key);
}
}
int count = 1;
FileOutputStream fileOutputStream = new FileOutputStream(name);
for (HashMap.Entry<String, String> pair2 : map.entrySet()) {
if (map.size() != count) {
String str = pair2.getKey() + pair2.getValue() + "\n";
byte[] bt = str.getBytes();
fileOutputStream.write(bt);
count++;
}
else if (map.size() == count) {
String str = pair2.getKey() + pair2.getValue();
byte[] bt = str.getBytes();
fileOutputStream.write(bt);
}
}
reader.close();
fileInputStream.close();
reader2.close();
fileOutputStream.close();
}
}
}
}