1. Zip压缩I/O实现
主要是使用java.util.zip包中的ZipOutputStream和ZipInputStream类来实现文件的压缩和解压缩。不管是解压缩还是压缩都需要先找到文件的“目录进入点”。
2. ZipOutputStream压缩文件
public class MyZip {
/***
* 参数为:
* @param zipFileName 压缩后的文件名
* @param inputFile 需要压缩的文件
* @throws IOException
*/
private void zip(String zipFileName, File inputFile) throws IOException {
ZipOutputStream zipOutputStream=new ZipOutputStream(new FileOutputStream(zipFileName));
zip(zipOutputStream,inputFile,"");
System.out.println("压缩中");
zipOutputStream.close();
}
/***
* 重载zip()方法
* @param zipOutputStream zip的输出流
* @param inputFile 需要压缩的文件
* @param base 文件名
* @throws IOException
*/
private void zip(ZipOutputStream zipOutputStream, File inputFile, String base) throws IOException {
if(inputFile.isDirectory()){
File[] files=inputFile.listFiles();
if(base.length()!=0){
zipOutputStream.putNextEntry(new ZipEntry(base+"/"));
}
for(int i=0;i<files.length;i++){
zip(zipOutputStream,files[i],base+files[i]);
}
}else{
zipOutputStream.putNextEntry(new ZipEntry(base));
FileInputStream fileInputStream=new FileInputStream(inputFile);
int b;
System.out.println(base);
while((b=fileInputStream.read())!=-1){
zipOutputStream.write(b);
}
fileInputStream.close();
}
}
public static void main(String[] args) throws IOException {
// compress();
Decompressing();
}
/**8
* 压缩文件
* @throws IOException
*/
private static void compress() throws IOException {
MyZip book=new MyZip();
book.zip("D:\\study\\研究生\\notebook\\java后端.zip",new File("D:\\study\\研究生\\notebook\\java后端"));
System.out.println("压缩完成");
}
}
3. ZipInputStream压缩文件
/***
* 解压缩
*/
private static void Decompressing() throws IOException {
File file=new File("D:\\study\\研究生\\notebook\\java后端.zip");
ZipInputStream zipInputStream;
ZipFile zipFile=new ZipFile(file);
zipInputStream=new ZipInputStream(new FileInputStream(file));
ZipEntry zipEntry;
while(((zipEntry=zipInputStream.getNextEntry()))!=null && !zipEntry.isDirectory()){
File temp=new File(zipEntry.getName());
if(!temp.exists()){
temp.getParentFile().mkdir();
OutputStream outputStream=new FileOutputStream(temp);
InputStream inputStream=zipFile.getInputStream(zipEntry);
int count;
while((count=inputStream.read())!=-1){
outputStream.write(count);
}
outputStream.close();
inputStream.close();
}
zipInputStream.closeEntry();
System.out.println(zipEntry.getName()+"解压成功");
}
zipInputStream.close();
}
版权声明:本文为m0_57098080原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。