(JAVA)-IO-压缩流
2023-12-13 23:40:48
当我们需要传输的文件过大时,就可以先将文件压缩再传输。
解压缩流:输入流,读取压缩包中的文件
压缩包中的每个文件都是一个zipEntry对象,解压本质就是把每一个zipEntry对象按照层级拷贝到本地另一个文件夹中
以下是解压的过程:
File src =new File("D:\\aaa.zip");//创建一个文件表示要解压的压缩包
FIle dest =new FIle("D:\\");
ZipInputStream zis =new ZipInputStream(new FileInputStream(src));
//创建一个解压缩流
zipEntry entry;
while((entry=zis.getentry)!=null)
{
//获取zipEntry对象,会把压缩包里面所有文件,文件夹获取,读取完返回null;
if(entry.isDirectory()){
FIle file =new File(dest,entry.toString())
file.mkdirs();
}else{
FileOutputStream fos=new FileOutputStream(new File(dest,entry.toString()));
int b;
while((b=zis.read())!=-1){
fos.wrte(b);
}
fos.close();
zis.closeEntry()://表示在压缩包中的一个文件处理完毕了
}
}
zis.close();//关流
?压缩:把每一个文件|文件夹看成zipEntry对象放入压缩包中
public static void main(String[] args) throws IOException {
File src=new File("D:\\aaa");//创建要压缩的文件
File dest=new File(src.getParentFile(),src.getName() +".zip");//创建要压缩包的位置
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(dest));
toZip(src,zos,src.getName());
zos.close();//关闭流
}
public static void toZip(File src,ZipOutputStream zos,String name) throws IOException {
File[] files = src.listFiles();
for (File file : files) {
if (file.isFile()) {//创建enTry对象并写入
ZipEntry entry = new ZipEntry(name+"\\"+file.getName());
zos.putNextEntry(entry);
FileInputStream fis =new FileInputStream(file);
int b;
while((b=fis.read())!=-1){
zos.write(b);
}
fis.close();
zos.closeEntry();
}
else{
toZip(file,zos,name+"\\"+file.getName());
}
}
}
}
文章来源:https://blog.csdn.net/fdvvg/article/details/134906195
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!