package com.newio;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.*;
/*需求分析:本节需要java三个压缩技术之--ZipOutputStream
* public ZipOutputStream(OutputStream out):创建新的zip输出流
* */
class ZipTool{
/**
* 1.压缩一个文件:
* @author ManagementAndJava
* @param fileName:被压缩的文件名
* @param zipFileName:压缩完成的文件名
* @throws IOException
*
*/
public static void compressFile(String fileName,String zipFileName) throws IOException{
//1.建立要被压缩的文件对象;
File file = new File(fileName);
//2.建立输出的压缩文件对象
File zipFile = new File(zipFileName);
//3.对压缩文件输入流进行封装
ZipOutputStream zos = new ZipOutputStream(new CheckedOutputStream(
new FileOutputStream(zipFile),new Adler32()));
BufferedOutputStream bos = new BufferedOutputStream(zos);
//4.设置压缩文件中的每个条目
zos.putNextEntry(new ZipEntry(file.getName()));
//5.对被压缩的文件输出流进行封装
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
//6.从输出流读出数据写入输入流中
int len;
byte[] bytes = new byte[1024];
while((len = bis.read(bytes))!=-1){
bos.write(bytes, 0, len);
bos.flush();
}
//7.关闭条目和流
zos.closeEntry();
bis.close();
zos.close();
}
/**
* 2.压缩一个文件夹:
* @author ManagementAndJava
* @param fileName:被压缩的文件名
* @param zipFileName:压缩完成的文件名
* @throws IOException
*
*/
public static void compressFiles(String fileName,String zipFileName) throws IOException{
//1.建立被压缩文件对象
File file = new File(fileName);
//2.建立输出的压缩文件对象
File zipFile = new File(zipFileName);
//3.对压缩文件输入流进行封装
ZipOutputStream zos = new ZipOutputStream(new CheckedOutputStream(
new FileOutputStream(zipFile),new Adler32()));
BufferedOutputStream bos = new BufferedOutputStream(zos);
if(file.isDirectory()){
int len;
byte[] bytes = new byte[1024];
BufferedInputStream bis ;
File[] files = file.listFiles();
for(int i=0;i<files.length;i++){
//4.对被压缩的文件输出流进行封装
bis = new BufferedInputStream(new FileInputStream(files[i]));
//5.建立压缩文件中的条目
zos.putNextEntry(new ZipEntry(files[i].getName()));
//6.从输出流读出数据写入输入流中
while((len = bis.read(bytes))!=-1){
bos.write(bytes,0,len);
bos.flush();
}
bis.close();
}
zos.closeEntry();
}
bos.close();
}
/**
* 3.压缩一个目录:其中可以含有多个文件和文件夹;
* @author ManagementAndJava
* @param fileName:被压缩的文件名
* @param zipFileName:压缩完成的文件名
* @throws IOException
*
*/
public static void compressDir(String fileName,String zipFileName) throws IOException{
//1.建立被压缩目录对象
File inFile = new File(fileName);
//2.建立输入的压缩文件对象
File zipFile = new File(zipFileName);
//3.对压缩问价输入流进行封装
ZipOutputStream zos = new ZipOutputStream(
new CheckedOutputStream(
new FileOutputStream(zipFile),new Adler32()));
BufferedOutputStream bos = new BufferedOutputStream(zos);
//定义一个方法内部来来拿到所有的文件名;
class ListDir{
private ArrayList<String> list = new ArrayList<String>();
//递归调用来遍历所有的文件名称;
public ArrayList<String> listDir(File dir){
if(dir.isDirectory()){
File[] files = dir.listFiles();
for(File f:files){
listDir(f);
}
}
else{
String dirName = dir.getAbsolutePath();
list.add(dirName);
}
return list;
}
}
//4.拿到文件目录下的所有文件;
ArrayList<String> list = new ListDir().listDir(inFile);
int len;
BufferedInputStream bis;
for(int i=0;i<list.size();i++){
bis = new BufferedInputStream(new FileInputStream(list.get(i)));
zos.putNextEntry(new ZipEntry(list.get(i)));
byte[] bytes = new byte[512];
while((len=bis.read(bytes))!=-1){
bos.write(bytes,0,len);
bos.flush();
}
bis.close();
}
bos.close();
}
}
public class ZipDemo {
public static void main(String[] args) throws IOException {
//调用方法1;压缩一个文件
ZipTool.compressFile("f:\\javatest\\1.java", "f:\\file.zip");
//调用方法2:压缩一个文件夹
ZipTool.compressFiles("f:\\javatest\\text", "f:\\files.zip");
//调用方法3:压缩一个目录里面有多个文件和文件夹
ZipTool.compressDir("f:\\javatest", "f:\\files.zip");
System.out.println("zip succeed");
}
}
相关推荐
Qt OpenGL 3D 点云数据显示
在Qt中使用OpenGL显示3D点云数据是一个常见的需求,特别是在计算机视觉、机器人学和三维重建等领域。下面我将介绍一个基本的实现方案。
Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream
通过上面的例子,我们知道压缩包里的是一个个ZipEntry对象,在解压时,可以遍历压缩包获取到ZipEntry对象。每一个ZipEntry对象都是一个文件,使用ZipFile可以获取到每一个ZipEntry对象的文件流;获取到文件流就可以将压缩包的文件读出来了。在创建ZipEntry对象时可以指定文件在压缩包的位置:new ZipEntry(“second-dir\second-01.txt”)用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。
ONNC Open Neural Network Compiler 开源神经网络编译器 一个 开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)部署导入ONNX模型
ONNC是一个集合了开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)。ONNC从底层开始构建,旨在将ONNX中间表示(IR)翻译成专有DLA代码。其软件架构设计强调可移植性和可重用性,从而简化了开发新后端的工作。上图展示了ONNC软件栈的顶层框图。软件栈从导入ONNX计算图模型到输出相应的硬件二进制文件,展示了各个功能块。
解决导出多个Excel表ZipOutputStream内存溢出问题——java heap space
在本地跑没有问题,但上传到服务器导出是,报错java heap space(内存溢出)。3、解决方案:先生成临时文件,然后再一点点写入压缩流里。1、检查错误,这段代码的问题。2、原因:流溢出导致程序报错。
FPGA中参数化SPI接口设计与Verilog实现
SPI(串行外设接口)作为嵌入式系统的核心通信协议,通过全双工、高速率特性在FPGA与Flash、ADC等外设交互中占据重要地位。参数化设计通过抽象时钟极性、数据位宽等可配置维度,采用分层架构实现硬件复用,显著提升开发效率。Verilog实现需重点处理跨时钟域同步和可配置帧结构,结合AXI总线集成与UVM验证方法学,可构建适应工业控制、物联网网关等场景的高可靠SPI解决方案。
Burp Suite手工验证CORS漏洞的四步闭环法
CORS(跨域资源共享)是Web应用实现跨域通信的基础机制,其安全本质在于服务端对Origin头的校验逻辑与响应头组合的语义一致性。当服务端错误地返回Access-Control-Allow-Origin: *并配合Access-Control-Allow-Credentials: true,或采用弱校验(如字符串包含匹配)时,将导致敏感数据泄露与凭据劫持风险。该漏洞难以被自动化扫描器发现,因其依赖请求上下文、认证状态及动态策略判断。Burp Suite作为核心工具,需通过构造跨域请求、捕获预检响应、交叉验
java byte转zip_java ZipInputStream转成C#对应的代码怎么转
java:/*** 解压byte数组类型的Zip** @param data* @return* @throws IOException*/private static byte[] unZip(byte[] data) throws IOException {byte[] b = null;ByteArrayInputStream bis = new ByteArrayInputStream(d...
【即插即用模块】注意力篇 | TGRS 2025 | CDFIM:通道+空间多尺度注意力,双模态特征融合增强,性能翻倍!
C2DFF-Net提出了一种轻量级跨模态特征融合模块CDFIM,通过模态差异感知和多尺度深度滤波增强双模态互补信息。该模块采用通道-空间注意力协同机制,以极低计算成本(仅增加0.26M参数)提升多模态目标检测性能,在三个遥感数据集上平均提升mAP约1.7%。适用于无人机等边缘设备的实时检测任务,为跨模态融合提供高效解决方案。
ZIP压缩输入/输出流
ZIP压缩管理文件(ZIP archive)是一种十分典型的文件压缩形式。关于ZIP压缩的I/O实现,在Java的内置类中提供了非常好用的相关类,所以其实现方式非常简单。本文将介绍 java.util.zip包中的ZipOutputStream与ZipInputStream类来实现文件的压缩/解压缩。
【27】软考软件设计师——数据流图(DFD)补全题满分精讲|下午15分大题深度拆解
本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第27篇,深度精讲**下午案例题第1道必考大题:数据流图(DFD)补全**,该题单题分值高达**12 ~ 15分**,是整张试卷最稳的保底得分大题。我结合多年备考复盘与真题阅卷规则,超详细拆解DFD四大核心元素标准定义、机考绘图规范、三层分层逻辑、**父图子图平衡刚性扣分规则**,升级强化版「DFD满分补全三步法」;复刻历年高频真题完整流程,拆解缺失数据流定位、实体/存储辨析、平衡改错、文字需求对照全流程,配套**阅卷满分答题话术、机考避坑细则
39-高级优化技术:指令调度与乱序执行 - 手把手教你手写CPU
本文介绍了现代处理器设计中提高指令级并行性(ILP)的两种关键技术:指令调度和乱序执行。指令调度分为静态调度(由编译器完成)和动态调度(由硬件完成),后者能更好适应运行时情况但复杂度更高。乱序执行通过动态重排指令顺序提高硬件利用率,其核心组件包括重排序缓冲区、保留站和寄存器重命名。文章提供了保留站的Verilog实现示例,并分析了不同优化技术在性能、硬件开销和功耗方面的权衡。最终指出,CPU设计需根据性能、功耗等需求选择合适的优化技术。
Java实现创建Zip压缩包并写入文件
使用ZipOutputStream创建压缩包,并将数据写入到压缩包内形成文件,当然也可以在压缩包内构建多级目录文件。
电商数据采集实战——多平台价格监控、比价分析与智能告警系统
在电商竞争日益激烈的今天,价格监控与比价分析已成为品牌商、渠道商和消费者的核心需求。对于品牌商而言,需要监控各渠道售价是否低于指导价(破价监控);对于消费者而言,希望在最佳时机以最低价购入心仪商品;对于数据分析师而言,价格波动数据是洞察市场趋势的金矿。然而,电商数据采集面临三大核心挑战:本文将基于 Python + Scrapy + Playwright + Redis + ClickHouse 技术栈,构建一套完整的电商价格监控与比价系统。架构分层说明:电商平台的反爬手段层出不穷,采集系统必须具备多层次的
Java ZipOutputStream 的使用,实现压缩文件
Java ZipOutputStream 的使用,实现压缩文件
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
java使用ZipOutputStream时出现的“不可预料的压缩文件末端”问题
java使用ZipOutputStream时出现的“不可预料的压缩文件末端”问题1. 问题2. 过程3. 原因表象深究本质4. 结论 上面有目录,嫌麻烦的可以直接看结论 1. 问题 之前使用java自带的压缩工具,ZipOutputStream写了一个压缩文件的方法。前几天整理代码的时候,更改了关流方式,同时整理了一下代码结构。当时没有注意重新测试这个方法,今天使用调用这个工具方法的接口时,发现生成的压缩文件不可读,出现 不可预料的压缩文件末端 的问题。 问题在于,这个压缩方法在许久之前是可以
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
关于Java使用ZipOutputStream创建压缩文件
关于Java使用ZipOutputStream创建压缩文件的方法,具体使用如下: /** * 此方法用于将文件写入zip管理文件里,同样也可以是已经创建好的zip管理文件 * @throws Exception */ public static void test4() throws Exception { //1.定义将要压缩的文件 File src=new File(&amp;amp;amp;quot;G...
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
Java使用ZipOutputStream导出压缩文件时,文件名中文乱码
Java使用ZipOutputStream导出压缩文件时,文件名中文乱码
Java ZipOutputStream压缩文件目录或文件
网上介绍Java使用ZipOutputStream大多数不是期望的方式,很多压缩的时候写的是绝对路径 如:D:/abc/ 压缩的时候以同样的文件路径写到ZIP文件上,所以自已研究后贴出亲测的代码 Path filepath = Paths.get("E:\\siniSVN\\res\\AAMS-V10");//目标文件夹 String zipname = "D:\\abcd.zip";//目标输出路径 try (ZipOutputStream zipOutputStream = new.
java 1.7图片压缩,手把手教你分析java基础15.7.1 压缩文件ZipOutputStream
电脑现已成为我们工作、生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java基础15.7.1 压缩文件ZipOutputStream的问题,如果我们遇到了java基础15.7.1 压缩文件ZipOutputStream的情况,该怎么处理怎么才能解决java基础15.7.1 压缩文件ZipOutputStream带来的困扰呢,对于这样的问题其实我们只需要电脑javapublic ZipO...
java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化) 1、乱码问题可以使用org.apache.tools.zip 2、md5每次都变化只需要设置entry.setTime(1) posted on 2008-11-20 1...
Java中Zip压缩文件的读写及应用(ZipInputStream ZipOutputStream)
Java中Zip压缩文件的读写
java 压缩文件 ZipOutputStream 支持中文
本文转载于:http://www.blogjava.net/xcp/archive/2009/10/30/CompressToZip.html 最近因为项目的需要,要做一个打包下载..而java提供的java.util.zip.*.......对中文不支持...反来到网上看了一下..要修改java的原代码..而无意之间又发现了ant的打包,直接支持中文打包..当时乐得...下面就...
java中使用ZipOutputStream流压缩文件或者文件夹
工作中用到了文件压缩,在这里记录一下
java zipoutputstream_利用java的ZipOutputStream类压缩文件或文件夹中的文件
package codemaking.util;import java.io.File;import org.apache.tools.zip.ZipOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipInputStream;import java.u...
Java使用ZipOutputStream压缩文件、文件夹,输出下载到本地
两种方式,1、使用Spring,文件在线URL输出到请求响应response,提供下载。2、使用本地文件夹,压缩成zip输出到相应目录,第一种传ZipEntry类,相当于在压缩包中放了一个文件,文件内容为空 ZipEntry有一个构造器,可以实现以路径的形式生成文件夹,例如`new ZipEntry("a/b/c.jpg")`,最终生成的压缩包中包含a文件夹,a文件夹内部包含b,b文件夹内部包含c.jpg,利用这个性质,就可以写一个递归,检索文件夹,如果检索过程中又发现文件夹,则继续递归.........
java用zipOutputStream压缩后用WinRAR解压出现“不可预料的压缩文件末端”错误
问题解压文件出现“不可预料的压缩文件末端”错误,用360解压和快压解压没有问题,用WinRAR解压出错 后台代码压缩方法 /** * 递归压缩文件夹 * @param srcRootDir 压缩文件夹根目录的子路径 * @param file 当前递归压缩的文件或目录对象 * @param zos 压缩文件存储对象 * @throws Exception */ publ...
1236



被折叠的 条评论
为什么被折叠?



