Уже разные варианты испробовал. И в строковый массив читал, и сразу в одну строку с добавлением переноса, и через FileWriter записывал, и через FileOutputStream дописывал последнюю строку.
Теперь еще и на незакрытый поток чтения из файла начал ругаться, хотя когда BufferedReader'ом читал, не ругался.
Уже всю голову сломал в попытках угадать чего хочет валидатор.
В файл, кстати записывает согласно условиям.
Помогите разгадать этот ребус!
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
// String files = "TestFile4.txt";
// InputStream is = new ByteArrayInputStream(files.getBytes());
// System.setIn(is);
if (args.length > 0) {
if (args[0].equals("-c")) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
ArrayList<byte[]> fileBytes = new ArrayList<>();
int maxIndex = 0;
InputStream iS = new FileInputStream(fileName);
while (true) {
byte[] lineBytes = new byte[50];
int count = iS.read(lineBytes);
if (count != -1) {
fileBytes.add(lineBytes);
String strIndex = "";
for (int i = 0; i < 8; i++) { strIndex += (char)lineBytes[i]; }
int index = Integer.parseInt(strIndex.trim());
if (maxIndex < index) { maxIndex = index; }
} else { break; }
}
iS.close();
int length = args.length;
String newProdName = "";
for (int i = 1; i < length - 2 & newProdName.length() < 30; i++) {
newProdName += args[i] + " ";
}
String formProdName = String.format("%n%-8s%-30s%-8s%-4s", (maxIndex + 1), newProdName, args[length - 2], args[length - 1]);
fileBytes.add(formProdName.getBytes());
OutputStream writer = new FileOutputStream(fileName);
for (byte[] bytes : fileBytes) {
writer.write(bytes);
}
writer.flush();
writer.close();
}
}
}
}