#java
#java
Вопрос:
Мне нужно прочитать текстовый файл, преобразовать его из UTF8 в ISO8859-1 и сохранить текстовый файл в zip.
Это то, что я получил до сих пор:
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
File file_in = new File("Input/file1.txt");
File file_out = new File("Output/file_out.txt");
try {
FileInputStream fis = new FileInputStream(file_in);
BufferedInputStream bis = new BufferedInputStream(fis);
byte fileContent[] = new byte[(int)file_in.length()];
bis.read(fileContent);
ByteBuffer bb = ByteBuffer.wrap(fileContent);
CharBuffer data = utf8charset.decode(bb);
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte outputData[] = outputBuffer.array();
FileOutputStream fos = new FileOutputStream(file_out);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(outputData);
bos.close();
} catch ...
Должен ли я создать текстовый файл, прочитать его еще раз и заархивировать его с помощью ZipOutputStream?
Или есть способ использовать байт [] txt-файла для создания zip-файла??
Комментарии:
1. ZipOutputStream.write принимает массив байтов.
Ответ №1:
Короткий ответ: да, вы можете записать zip-файл непосредственно из массива байтов.
Посмотрите документацию для: java.util.zip.ZipOutputStream.write()
. В качестве параметров он принимает массив байтов, начальное смещение и длину.
Должно быть понятно оттуда.
И просто чтобы предупредить вас, не все UTF-8 могут быть закодированы как ISO8859-1.