1) По идеи работает как надо удаляет, заменяет (это понятно когда выводишь второй раз список), но когда для проверке выводишь лист получается так:
19847 ����� ������� ����� 159.00 12
198479 ����� ������� ������ � �������173.00 17
19847983������ ��� �������������, ����10173.991234
Не могу понять как это решить.
2) Когда перезаписываю файл получается так:
19847 пњљпњљпњљпњљпњљ пњљпњљпњљпњљпњљпњљпњљ пњљпњљпњљпњљпњљ 159.00 1219847983пњљпњљпњљпњљпњљпњљ пњљпњљпњљ пњљпњљпњљпњљпњљпњљпњљпњљпњљпњљпњљпњљпњљ, пњљпњљпњљпњљ10173.991234
Буду благодарен если кто-то разложит в чем суть проблемы и как это решать (то что кириллица занимает 2 байта я знаю, но не догоню как порешать)
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception{
BufferedReader readerNameFale = new BufferedReader(new InputStreamReader(System.in));//читаем имя файла
String NAMEFALE = readerNameFale.readLine();
readerNameFale.close();
ArrayList <String> FILE = new ArrayList<>(); //сосздаем список
BufferedReader readerFile = new BufferedReader(new FileReader(NAMEFALE));
String line;
while ((line=readerFile.readLine())!=null){ //заполняем список строчками с товаром
FILE.add(line);
}
readerFile.close();
for(int i=0; i<FILE.size();i++){
System.out.println(FILE.get(i));
}
System.out.println(args[0]+" "+args[1]);
if (args[0]==null){ //елси ноль то в начало
return;
}
else if (args[0].equals("-u")){ //проверяем марке
String content = "";
for (int i=0; i<FILE.size();i++){ //перебираем все строчик списка
if(FILE.get(i).substring(0,8).trim().equals(args[1].trim())){ //проверяем наличе id в строчки
String prodName = String.format("%-30.30s", args[2]); //выделяем имена, прайс, айди
String price = String.format("%-8.8s", args[3]);
String Id = String.format("%-8.8s", args[1]);
String quantity = String.format("%-4.4s", args[4]);
String newLine = Id + prodName + price + quantity; //переводим все в строчку
FILE.set(i,newLine);
}
}
BufferedWriter writer = new BufferedWriter(new FileWriter(NAMEFALE));
for (int f=0; f<FILE.size();f++){
writer.write(FILE.get(f));
}
writer.close();
}
else if (args[0].equals("-d")){
String content = "";
for (int i=0; i<FILE.size();i++) {
if (Integer.parseInt(FILE.get(i).substring(0,8).trim())==Integer.parseInt(args[1].trim())) {
FILE.remove(i);
}
}
BufferedWriter writer = new BufferedWriter(new FileWriter(NAMEFALE));
for (int f=0; f<FILE.size();f++){
writer.write(FILE.get(f));
}
writer.close();
}
for(int i=0; i<FILE.size();i++){
System.out.println(FILE.get(i));
}
}
}