java编程zipoutputstream如何使用,能写一个简单的例子么,新手难了看不怎么懂,最后 20
2015-05-26 · 知道合伙人互联网行家
zip格式标准中,没有规定怎么去记录文件属性。就是说,即使设了属性,解码器也不强制需要遵守,不一定会还原成只读文件。
目前可还原只读属性的解压器都是遵守win/dos下的某种“潜规则”,把属性放在扩展区块extra field中。Java可以用ZipEntry.setExtra设置这些扩展驱。
可以自己用压缩一个只读文件的zip,然后用ZipEntry.getExtra照抄分析出这种潜规则。
package zip.demo1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipDemo1 {
File file;
File readFile;
FileInputStream fis;
FileOutputStream fos;
ZipInputStream zis;
ZipOutputStream zos;
byte buf[];
public ZipDemo1() {
file = new File("C:\\Users\\majiao\\Desktop/zip.zip");
readFile = new File("C:\\Users\\majiao\\Desktop/zip.txt");
try {
fis = new FileInputStream(readFile);
BufferedInputStream bis = new BufferedInputStream(fis);
buf = new byte[100];
ZipEntry entry = new ZipEntry("zip.txt");
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(file));
zos.putNextEntry(entry);
BufferedOutputStream bos = new BufferedOutputStream(zos);
while(true) {
int i = bis.read();
if(i == -1) {
break;
}
bos.write(i);
bos.flush();
}
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ZipDemo1();
}
}