public static void writeFile(List<Product> products,String fileName, int mode) throws IOException {
boolean modeEnd=false;int size=0;
if(mode==1){modeEnd=true;size=products.size()-1;}
String stringProduct="";
FileOutputStream fileWriter = new FileOutputStream(fileName,modeEnd);
//System.out.println(size);
for (int i=size;i<products.size();i++){
stringProduct=products.get(i).id+products.get(i).productName+products.get(i).price+products.get(i).quntity;
fileWriter.write(stringProduct.getBytes(StandardCharsets.ISO_8859_1));
fileWriter.write(10);
}
fileWriter.close();
package com.javarush.task.task18.task1827;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws IOException {
// write your code here
List<Product> products = new ArrayList();
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String fileName = bf.readLine();
bf.close();
if (args.length != 0) {
if (args[0].equals("-c")) {readFile(products, fileName);
products.add(stringFormattingArgs(args, products));
writeFile(products, fileName,1);//
}
}
}
private static Product stringFormattingArgs (String[] args,List product) {
String stringArgs="";String productName="";int charachter=0;boolean charDigital=false;String price="";int charPrice=0;int charQuntiy=0;String quntity="";
String id="";
for (String str:args)stringArgs+=" "+str;
String[] stringArgsSplit=stringArgs.split("");
for (int i =4;i<stringArgsSplit.length;i++){
try{
if (charDigital&&stringArgsSplit[i].equals("."))price+=stringArgsSplit[i];//если точька
if(charDigital&&stringArgsSplit[i].equals(" "))charPrice=9;
Float.parseFloat(stringArgsSplit[i]); // парсим строку если не цифры
charDigital=true;//пока нет цифр
if (charDigital&&charPrice<7){ charPrice++;price+=stringArgsSplit[i];}
if (charPrice>7&&charQuntiy<4){charQuntiy++;quntity+=stringArgsSplit[i];}
}catch (NumberFormatException e){
charachter++;
if (charachter<31&&!charDigital)productName+=stringArgsSplit[i];
}
}
id =idGenerator(product);// получаем новый id
int length; //формируем строку согласно задания
length=8-id.length();for(int i=0;i<length;i++)id+=" ";
length=30-productName.length();for (int i=0;i<length;i++)productName+=" ";
length =8-price.length();for (int i=0;i<length;i++)price+=" ";
length=4-quntity.length();for (int i=0;i<length;i++)quntity+=" ";
// System.out.println(id+productName+price+quntity);
return new Product(id,productName,price,quntity);
}
private static String idGenerator(List<Product> product) {// генератор нового id
String maxid="0";
for (Product stringProduct:product){
if(Integer.parseInt(maxid.trim())<Integer.parseInt(stringProduct.id.trim()))maxid=stringProduct.id;
}
maxid=String.valueOf(Integer.parseInt(maxid.trim())+1);
return maxid;
}
//метод записи в файл
public static void writeFile(List<Product> products,String fileName, int mode) throws IOException {
boolean modeEnd=false;int size=0;
if(mode==1){modeEnd=true;size=products.size()-1;}
String stringProduct="";
FileOutputStream fileWriter = new FileOutputStream(fileName,modeEnd);
//System.out.println(size);
for (int i=size;i<products.size();i++){
stringProduct=products.get(i).id+products.get(i).productName+products.get(i).price+products.get(i).quntity;
fileWriter.write(stringProduct.getBytes(StandardCharsets.ISO_8859_1));
fileWriter.write(10);
}
fileWriter.close();
}
//считываем вList все товары
public static void readFile(List products,String fileName) throws IOException {
String stringProduct = "";
FileInputStream fileInput = new FileInputStream(fileName);
while (fileInput.available()>0) {
int b = fileInput.read();
if (b!=10)stringProduct+=(char)b;
else { if(stringProduct!="")products.add(parsing(stringProduct));// записываем строку в List предворительно распарсив
stringProduct="";}
}
fileInput.close();
}
// парсим и раскидываем по значениям в класс Product
public static Product parsing(String stringProduct){
//System.out.println("stringProduct:"+stringProduct);
String id = stringProduct.substring(0,8);
String productName = stringProduct.substring(7, 30);
String price = stringProduct.substring(30, 37);
String quntity = stringProduct.substring(37);
return new Product(id,productName,price,quntity);
}
public static class Product{
private String id;
private String productName;
private String price;
private String quntity;
public Product(String id, String productName, String price, String quntity) {
this.id = id;
this.productName = productName;
this.price = price;
this.quntity = quntity;
}
}
}