Скажите, пожалуйста, почему строка по id обновляется, но не хочет удаляться?
В коде это строки 31-35. Никак не могу найти ошибку:(
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.util.*;
import java.io.*;
public class Solution {
List<Integer> idsList = new ArrayList<>();
public static void main(String[] args) throws IOException {
if (args.length == 0 || !"-u".equals(args[0])) {
return;
}
Solution solution = new Solution();
String fileName = solution.getFn(System.in);
// создаём список строк из строк считанного файла
List<String> sbf = solution.getRowsFromFile(fileName);
// выделяем из sbf список идентификаторов
solution.idsList = solution.getIdsList(sbf);
int thisInd = Integer.valueOf(args[1].trim());
int index = solution.idsList.indexOf(thisInd);
int current = 0;
if ("-d".equals(args[0])) {
while ((current=solution.idsList.indexOf(thisInd)) != -1){
solution.idsList.remove(current);
sbf.remove(current);
}
} else if ("-u".equals(args[0])) {
String prodName = args[2];
String price = args[3];
String quantity = args[4];
String newStr = solution.stringWithSpaces(String.valueOf(thisInd), 8) +
solution.stringWithSpaces(prodName, 30) + solution.stringWithSpaces(price, 8) +
solution.stringWithSpaces(quantity, 4);
sbf.set(index, newStr);
}
// перезаписываем файл
try (BufferedWriter bw = new BufferedWriter(new FileWriter(fileName, false))) {
StringBuffer outBuff = new StringBuffer();
for (String x : sbf
) {
outBuff.append(x).append("\n");
}
String out = outBuff.toString();
bw.write(out.substring(0, out.length() - 1));
}
}
public String getFn(InputStream in) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
return (reader.readLine());
}
}
public List<String> getRowsFromFile(String fileName) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
String s;
List<String> sbf = new ArrayList<>();
while ((s = reader.readLine()) != null) {
sbf.add(s);
}
return sbf;
}
}
public List<Integer> getIdsList(List<String> sbf) {
List<Integer> lt = new ArrayList<>();
for (int i = 0; i < sbf.size(); i++) {
lt.add(Integer.parseInt(sbf.get(i).substring(0, 8).trim()));
}
return lt;
}
public String stringWithSpaces(String initStr, int newLength) {
String initStrCopy = initStr;
int initLength = initStr.length();
int numberOfSpaces = newLength - initLength;
if (numberOfSpaces < 0) {
initStrCopy = initStr.substring(0, newLength);
return initStrCopy;
}
for (int i = 0; i < numberOfSpaces; i++) {
initStrCopy += " ";
}
return initStrCopy;
}
}