Вопросов нет, просто хотел показать, до каких извращений можно дойти изучая то, чего еще не знаешь...
"Я устал, я ухожу" ... в человеческое чтение файла и в запись
package com.javarush.task.task18.task1827;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
/*
??????
*/
public class Solution {
public static void main(String[] args) throws Exception {
//args = new String[] {"-c", "Tsetssdf a", "Gdf", "10173.99111111111113123", "1234"};
//args = new String[] {"-c", "????? ?????"};
FileInputStream inputStream = null;
if (args.length > 0 && args[0].equals("-c")) {
String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
//String str = "D:/!JavaFiles/1.txt";
try {
byte[] buffer1 = new byte[80];
int maxId = 0;
boolean neetNextString = false;
System.out.println(1);
inputStream = new FileInputStream(str);
LinkedHashMap<Integer, byte[]> map = new LinkedHashMap<>(); // ìàïà èç ìàññèâîâ áàéò
while (inputStream.available() > 0) {
byte[] bufferTmp = new byte[80]; // 80 - ýòî ìàêñèìóì, êîòîðûé òî÷íî ñìîæåò ñîäåðæàòü ñòðîêó
for (int i = 0; i < bufferTmp.length; i++) {
bufferTmp[i] = '#';
}
int b = 0;
int index = 0;
while (inputStream.available() > 0) {
b = inputStream.read();
if (b == 10) {
break; // ñíîâà óéäåì íà ñîçäàíèå íîâîãî ìàññèâà áàéò
}
bufferTmp[index] = (byte) b;
index++;
}
map.put(map.size(), bufferTmp);
}
inputStream.close();
// òåïåðü â ïàìÿòè ìàïà èç ìàññèâîâ áàéò, êîòîðóþ óìååì ïèñàòü â äðóãîé ôàéë
// Ïîëó÷èì ìàêñèìàëíûé íîìåð (÷èñëî)
int MaxValue = 1;
for (int i = 0; i < map.size(); i++) {
System.out.println("Ïðîâåðÿåì èäåíòèôèêàòîð â ýëåìåíòå íîìåð: " + i);
String maxValueStr = "";
for (int j = 0; j < 8; j++) {
System.out.println("Î÷åðåäíîé ñèìâîë: " + (char) map.get(i)[j]);
maxValueStr += (char) map.get(i)[j];
}
maxValueStr = maxValueStr.trim();
System.out.println("Î÷åðåäíîå ïðî÷èòàííîå çíà÷åíèå: " + maxValueStr.trim());
if (MaxValue < Integer.parseInt(maxValueStr)) {
MaxValue = Integer.parseInt(maxValueStr);
}
}
MaxValue++;
System.out.println("Íàéäåí ìàêñèìàëüíûé ýëåìåíò: " + MaxValue);
String maxValueStr = String.valueOf(MaxValue);
maxValueStr = String.format("%-8.8s", maxValueStr);
System.out.println("Ñòðîêà ìàêñèìàëüíûé ýëåìåíò: " + maxValueStr);
// Äîáàâèì â Ìàïó ìàññèâî íîâûé ýëåìåíò
byte[] bufferNew = new byte[80]; // 80 - ýòî ìàêñèìóì, êîòîðûé òî÷íî ñìîæåò ñîäåðæàòü ñòðîêó
for (int i = 0; i < bufferNew.length; i++) {
bufferNew[i] = '#';
}
// äîáüåì íîìåðîì
byte[] by = new byte[8];
by = maxValueStr.substring(0, 8).getBytes();
System.out.println("Âûâåäåì áàéòû...");
for (int i = 0; i < by.length; i++) {
System.out.print(by[i]);
}
bufferNew[0] = by[0];
bufferNew[1] = by[1];
bufferNew[2] = by[2];
bufferNew[3] = by[3];
bufferNew[4] = by[4];
bufferNew[5] = by[5];
bufferNew[6] = by[6];
bufferNew[7] = by[7];
// äîáüåì îñòàëüíûìè çíà÷åíèÿìè
for (int i = 0; i < 60; i++) {
bufferNew[i+8] = args[1].getBytes()[i];
}
String args2 = String.format("%-8.8s", args[2]);
for (int i = 0; i < 8; i++) {
bufferNew[i+68] = args2.getBytes()[i];
}
String args3 = String.format("%-4.4s", args[3]);
System.out.println("args3 " + args3);
for (int i = 0; i < 4; i++) {
bufferNew[i+76] = args3.getBytes()[i];
}
map.put(map.size(), bufferNew);
// ñåé÷àñ ïðîñòî çàïèøåì ìàïó áàéò â ôàéë
System.out.println("\nÇàïèøåì äàííûå âî âòîðîé ôàéë");
// FileOutputStream outputStreamTemp = new FileOutputStream("D:/!JavaFiles/2.txt");
FileOutputStream outputStreamTemp = new FileOutputStream(str);
ByteArrayOutputStream bs = new ByteArrayOutputStream();
for (int i = 0; i < map.size(); i++) {
int indexR = 79;
for (int j = 0; j < 80; j++) {
if (map.get(i)[j] == 35) { // 35 - ñèìâîë # , îí áóäåò îçíà÷àòü, ÷òî ìàññèâ èñ÷åðïàí è ìîæíî çàïèñàòü ñóùåñòâåííóþ ÷àñòü
indexR = j;
break;
}
}
bs.write(map.get(i), 0, indexR);
bs.write("\n".getBytes());
}
bs.writeTo(outputStreamTemp);
outputStreamTemp.close();
// òåïåðü âñå çàïèñàíî â ôàéë, è ìîæíî ðàäîâàòüñÿ
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/*
if (neetNextString) {
outputStream.write("\n");
}
maxId++;
outputStream.write(String.format("%-8s", Integer.toString(maxId)));
String nameProduct = args[1];
if (nameProduct.length() > 30) {
nameProduct = nameProduct.substring(0, 30);
}
outputStream.write(String.format("%-30s", nameProduct));
outputStream.write(String.format("%-8s", args[args.length - 2]));
outputStream.write(String.format("%-4s", args[args.length - 1]));
outputStream.close();
*/