我需要读取一个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 ??
答案 0 :(得分:2)
简短回答是肯定的,你可以直接从字节数组中编写zip。
查看以下文档:java.util.zip.ZipOutputStream.write()
。它需要一个字节数组,起始偏移量和长度作为参数。
应该从那里自我解释。
只是为了警告你,并非所有的UTF-8都可以编码为ISO8859-1。