从txt文件中压缩字节[]

时间:2011-10-05 16:10:50

标签: java

我需要读取一个txt文件,将其从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 ...

我是否必须创建txt文件,再次阅读并使用ZipOutputStream压缩它? 或者有没有办法使用txtfile的byte []创建zip ??

1 个答案:

答案 0 :(得分:2)

简短回答是肯定的,你可以直接从字节数组中编写zip。

查看以下文档:java.util.zip.ZipOutputStream.write()。它需要一个字节数组,起始偏移量和长度作为参数。

应该从那里自我解释。

只是为了警告你,并非所有的UTF-8都可以编码为ISO8859-1。