Не проходит по 3, 4 пунткам. И если
PrintWriter fileWriter = new PrintWriter(new FileWriter(fileName));
заменить на
PrintWriter fileWriter = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
то вообще проходит только первые 2 пункта.
Почему так? Особо ведь ничего не менятся.
И имеет ли вообще тут смысл использовать BufferedWriter
package com.javarush.task.task18.task1827;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 0) return;
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = consoleReader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
int maxIndex = 0;
while (fileReader.ready())
{
String currentLine = fileReader.readLine();
String stringNumber = currentLine.substring(0, 8);
int currentIndex = Integer.parseInt(stringNumber.trim());
if (currentIndex > maxIndex) maxIndex = currentIndex;
}
fileReader.close();
PrintWriter fileWriter = new PrintWriter(new FileWriter(fileName));
// если предыдущую строчку заменить на эту то вообще проходит только первые 2 пункта, почему так?
// PrintWriter fileWriter = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
String productName = args[1];
if (productName.length() > 30) productName = productName.substring(0, 30);
String price = args[2];
if (productName.length() > 8) price = price.substring(0, 8);
String quantity = args[3];
if (quantity.length() > 4) quantity = quantity.substring(0, 4);
fileWriter.printf("%-8d%-30s%-8s%-4s", maxIndex + 1, productName, price, quantity);
fileWriter.close();
consoleReader.close();
}
}