Архивирование байта [] из текстового файла

#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.