package com.javarush.test.level22.lesson13.task02;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
/* Смена кодировки
В метод main первым параметром приходит имя файла, тело которого в кодировке Windows-1251.
В метод main вторым параметром приходит имя файла, в который необходимо записать содержимое первого файла в кодировке UTF-8.
*/
public class Solution {
static String win1251TestString = "Нарушение кодировки консоли?"; //only for your testing
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream(args[0]);
FileOutputStream out = new FileOutputStream(args[1]);
byte[] buffer = new byte[in.available()];
int count = in.read(buffer);
String s = new String(buffer, 0, count, Charset.forName("UTF-8"));
// System.out.println(s);
buffer = s.getBytes(Charset.forName("Windows-1251"));
// System.out.println(new String(buffer));
out.write(buffer);
in.close();
out.close();
}
}
Поведение методов, зависящих от кодировки по умолчанию, нельзя надежно покрыть тестами, потому что кодировок достаточно много, и множество их значений может расширяться. Может выйти какая-нибудь новая ОС с кодировкой типа UTF-48, и все тесты на ней окажутся бесполезными.