Тестирую на пк, в блокноте поток вывода, выводит следующий контент: "19847984синяяшапкабелаяшапкачернаяшапк7 2222"
Как решить вопрос кодировки?, уже долгое время не получается кучу схожих вопросов смотрел. Так и не вышло.
Помогите с задачей плз)
package com.javarush.task.task18.task1827;
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length>0&&args[0].equals("-c")){
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
FileReader fileReader = new FileReader(fileName);
FileWriter fileWriter = new FileWriter(fileName,true);
StringBuilder sb = new StringBuilder();
char[] buffer = new char[50];
int max = 0;
while (fileReader.ready()) {
fileReader.read(buffer);
if (max < id(buffer)) {
max = id(buffer);
}
}
max++;
sb.append(max);
sb.append(name(args[1]));
sb.append(price(args[2]));
sb.append(quantity(args[3]));
fileWriter.write(sb.toString());
fileReader.close();
fileWriter.close();
}
}
public static int id(char[] charArray){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 8; i++) {
sb.append(charArray[i]);
}
return Integer.parseInt(sb.toString().trim());
}
public static String name(String name){
StringBuilder sb = new StringBuilder();
if (name.length()<30) {
sb.append(name);
int lo = sb.length();
for (int i = 0; i < 30-lo; i++) {
sb.append(" ");
}
} else if (name.length()>30){
sb.append(name, 0, 30);
}
return sb.toString();
}
public static String price(String price){
StringBuilder sb = new StringBuilder();
if (price.length()<8) {
sb.append(price);
int lo = sb.length();
for (int i = 0; i < 8-lo; i++) {
sb.append(" ");
}
} else if (price.length()>8){
sb.append(price, 0, 8);
}
return sb.toString();
}
public static String quantity(String quantity){
StringBuilder sb = new StringBuilder();
if (quantity.length()<4) {
sb.append(quantity);
int lo = sb.length();
for (int i = 0; i < 4-lo; i++) {
sb.append(" ");
}
} else if (quantity.length()>4){
sb.append(quantity, 0, 4);
}
return sb.toString();
}
}