Использовал часть решения предыдущей задачи.
Сам попробовал и удалить и изменить строку и все работает как ожидалось...
Подскажите люди добрые, в чем проблема то..
package com.javarush.task.task18.task1828;
/*
Прайсы 2
-u id productName price quantity
-d id
C:\Users\ayzin\Desktop\Java_files_tests\test1.txt
-d 198479
-u 198479 кофточка 100 45
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws Exception{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String fileName = buf.readLine();
buf.close();
if (args.length>0) {
BufferedReader buf2 = new BufferedReader(new FileReader(fileName));
int lineNumberToUpdate = SearchForLineNumberByID(buf2, Integer.parseInt(args[1]));
buf2.close();
if (args[0].equals("-u"))
{
updateLine(lineNumberToUpdate, fileName, args);
}
else if (args[0].equals("-d"))
{
deleteLine(lineNumberToUpdate, fileName);
}
}
}
private static int SearchForLineNumberByID(BufferedReader buf, int idToSearch) throws IOException {
String currentLine;
int currentLineNumber = 0;
while ((currentLine = buf.readLine()) != null)
{
String currentIDAfterTrim = currentLine.substring(0, 8).trim();
int currentID = Integer.parseInt(currentIDAfterTrim);
if (currentID == idToSearch)
{
buf.close();
break;
}else
currentLineNumber++;
}
return currentLineNumber;
}
private static String prepareForWriting(String productName, int expectedLength)
{
StringBuilder stringBuilder = new StringBuilder(productName);
if (productName.length()<expectedLength)
{
int spacesToAdd = expectedLength - productName.length();
for (int i=0; i< spacesToAdd; i++)
{
stringBuilder.append(" ");
}
}
return stringBuilder.toString();
}
private static void updateLine(int lineNumberToUpdate, String fileName, String[] args) throws IOException {
List<String> tempList = new ArrayList<>();
BufferedReader buf = new BufferedReader(new FileReader(fileName));
String currentLine;
while ((currentLine = buf.readLine()) != null){
tempList.add(currentLine);
}
buf.close();
String IDForWrite = prepareForWriting(args[1], 8);
String productName = prepareForWriting(args[2], 30);
String productPrice = prepareForWriting(args[3], 8);
String productQuantity = prepareForWriting(args[4], 4);
StringBuilder stringBuilder = new StringBuilder().append(IDForWrite).append(productName).append(productPrice).append(productQuantity);
tempList.remove(lineNumberToUpdate);
tempList.add(lineNumberToUpdate, stringBuilder.toString());
FileWriter fileWriter = new FileWriter(fileName);
for (String line : tempList)
{
fileWriter.write(line + "\n");
}
fileWriter.close();
}
private static void deleteLine(int lineNumberToDelete, String fileName) throws IOException {
List<String> tempList = new ArrayList<>();
BufferedReader buf = new BufferedReader(new FileReader(fileName));
String currentLine;
while ((currentLine = buf.readLine()) != null){
tempList.add(currentLine);
}
buf.close();
tempList.remove(lineNumberToDelete);
FileWriter fileWriter = new FileWriter(fileName);
for (String line : tempList)
{
fileWriter.write(line + "\n");
}
fileWriter.close();
}
}