Привет! Что я упускаю? запись в файл идет корректно.
Кода много получилось, я коменты проставил, но не все. По аналогии они подойдут ко всем параметрам.
Кода много получилось, я коменты проставил, но не все. По аналогии они подойдут ко всем параметрам.package com.javarush.task.task18.task1827;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
Прайсы
*/
//-c "Штани з лампасами" 799 1432
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filePath = reader.readLine();
File file = new File(filePath);
FileReader fr = new FileReader(file);
reader = new BufferedReader(fr);
FileInputStream inputStream = new FileInputStream(filePath);
FileOutputStream outputStream = new FileOutputStream(filePath, true); // D:\java\1.txt
ArrayList<String> listLines = new ArrayList<>();
ArrayList<String> list = new ArrayList<>();
String[] idArr;
String idString;
String idStringFinal = "";
String[] nameArr;
ArrayList<String> listName = new ArrayList<>();
String NameString = "";
String priceString;
String priceStringFinal = "";
String[] priceArr;
ArrayList<String> priceList = new ArrayList<>();
String quantityString;
String quantityStringFinal = "";
String[] quantityArr;
ArrayList<String> quantityList = new ArrayList<>();
String command = "";
String productName = "";
String price = "";
String quantity = "";
if (args != null) {
for (int i = 0; i < args.length; i++) {
if (i == 0) {
command = args[i];
} else if (i == args.length - 1) {
quantity = String.format("%-4s", args[i]);
} else if (i == args.length - 2) {
price = String.format("%-8s", args[i]);
} else {
productName = productName + " " + args[i];
}
}
productName = String.format("%-30s", productName);
try {
if (args[0].equals("-c")) {
//id
int id;
String line = reader.readLine();
while (line != null) {
listLines.add(line);
line = reader.readLine();
}
if (listLines.size() == 0) {
id = 1;
} else {
id = listLines.size() + 1;
}
idString = String.valueOf(id);
idArr = idString.split("");
list.addAll(Arrays.asList(idArr));
int listSizeStart = list.size();
if (list.size() > 8) {
for (int i = 8; i < listSizeStart - 1; i++) {
list.remove(i);
}
}
int listSize = list.size();
if (listSize != 8) {
for (int i = 0; i < 8 - listSize; i++) {
list.add(" ");
}
}
for (int i = 0; i < list.size(); i++) {
idStringFinal += list.get(i);
}
byte[] idBytes = idStringFinal.getBytes();
byte[] returnLine = new byte[1]; // перенос строки
returnLine[0] = 10;
//productName
nameArr = args[1].split("");
listName.addAll(Arrays.asList(nameArr));
//оставляем 30 символов, если в массиве больше 30 символов
int listNameSizeStart = listName.size(); // длина листа до удаления
if (listName.size() > 30) {
for (int i = 0; i < listNameSizeStart; i++) {
listName.remove(listName.size() - 1);
if (listName.size() <= 30) {
break;
}
}
}
int listNameSize = listName.size(); // новая длина листа
if (listNameSize != 30) {
for (int i = 0; i < 30 - listNameSize; i++) {
listName.add(" ");
}
}
for (int i = 0; i < listName.size(); i++) {
NameString += listName.get(i);
}
byte[] productNameBytes = NameString.getBytes(StandardCharsets.UTF_8);
//price
priceString = String.valueOf(args[2]);
priceArr = priceString.split("");
priceList.addAll(Arrays.asList(priceArr));
int priceListSizeStart = priceList.size();
if (priceListSizeStart > 8) {
for (int i = 0; i < priceListSizeStart; i++) {
priceList.remove(priceList.size() - 1);
if (priceList.size() <= 8) {
break;
}
}
}
int priceListSize = priceList.size();
for (int i = 0; i < 8 - priceListSize; i++) {
priceList.add(" ");
}
for (int i = 0; i < priceList.size(); i++) {
priceStringFinal += priceList.get(i);
}
byte[] priceBytes = priceStringFinal.getBytes();
//quantity
quantityString = String.valueOf(args[3]);
quantityArr = quantityString.split("");
quantityList.addAll(Arrays.asList(quantityArr));
int quantityListSizeStart = quantityList.size();
if (quantityListSizeStart > 4) {
for (int i = 0; i < quantityListSizeStart; i++) {
quantityList.remove(quantityList.size() - 1);
if (quantityList.size() <= 4) {
break;
}
}
}
int quantityListSize = quantityList.size();
for (int i = 0; i < 4 - quantityListSize; i++) {
quantityList.add(" ");
}
for (int i = 0; i < quantityListSize; i++) {
quantityStringFinal += quantityList.get(i);
}
byte[] quantityBytes = quantityStringFinal.getBytes();
outputStream.write(idBytes);
outputStream.write(productNameBytes);
outputStream.write(priceBytes);
outputStream.write(quantityBytes);
outputStream.write(returnLine);
}
} catch (ArrayIndexOutOfBoundsException e) {
}
reader.close();
fr.close();
inputStream.close();
outputStream.close();
}
}
}