Делал решение как по лекции, вроде все понял.
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.charset.Charset;
/*
Смена кодировки
*/
public class Solution {
public static void main(String[] args) throws IOException {
try (FileInputStream inputStream = new FileInputStream(args[0]);//принимаем имя файла в виде первого параметра, с которого мы будем читать данные
FileOutputStream outputStream = new FileOutputStream(args[1])) {//принимаем имя второго файла в виде второго параметра, в который необходимо
//будет записать содержимое превого файла
Charset windows1251 = Charset.forName("Windows-1251");//создаем объект класса Charset который будет хранить в себе кодировку Windows-1251
Charset utf8 = StandardCharsets.UTF_8;//создаем объект класса Charset который будет хранить в себе кодировку Windows-1251
byte[] buffer = new byte[inputStream.available()];//создали байтовый список. Размер определяется наличием кол-ва символов в файле входящего потока args[0]
inputStream.read(buffer);//вчитываем информацию в список buffer
String s = new String(buffer, windows1251);//создали объект s,который примет два аргумента, 1)buffer - список, который хранит в себе данные с первого файла
//2)windows1251 - это наш тип кодировки, в который мы переведем список buffer
buffer = s.getBytes(utf8);//переводим наш уже откодированный объект String s, в другую кодировку UTF-8.
//Чтобы это сделать, пришлось получить строку s, в виде байтов getBytes()
outputStream.write(buffer);//записываем откодированные данные к кодировке UTF-8, в поток вывода, т.е7 это был бы файл в который бы мы это записали
}
}
}
А вот решение от самой JavaRush:
Вы думаете это лучше? Как они в этом решении успели уже все переписать в другую кодировку? Спасибо!
import java.io.*;
import java.nio.charset.StandardCharsets;
/*
Смена кодировки
*/
public class Solution {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "Windows-1251"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), StandardCharsets.UTF_8))) {
String s;
while ((s = reader.readLine()) != null) {
writer.write(s + "\n");
}
}
}
}