java 实现文件压缩和解压缩

实现了文件的简单压缩、解压缩。主要测试用的里面有一些可能写的比较仓促,如有不适之处还望不吝赐教。

1.解决了中文的问题,应用的不是jdk中的包,而是应用的ant.jar

 代码:

  

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;


public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Test test = new Test(); 
		//test.unzipFiles("D:/xmlZipFils/test.zip");
		test.zipFiles();
	}
	
	/**
	 * 压缩文件
	 */
	public void zipFiles(){
		File fromFiles = new File("d:\\table2xml");
		 if(!fromFiles.exists()){
			 fromFiles.mkdirs();
		 }
		 try {
			//输出流
			 OutputStream os = new FileOutputStream("D:\\xmlZipFils\\test.zip");
			 ZipOutputStream zipos = new ZipOutputStream(os);
			 File  file = null;
			 ZipEntry zipEntry = null;
			 InputStream inputStream = null;
			 File[] files = fromFiles.listFiles(new FileFilter(){
					public boolean accept(File pathname) {
						// TODO Auto-generated method stub
						boolean flag = false;
						if(pathname.getName().indexOf("桥接测试@weibainju_1181")!=-1){
							flag = true;
						}
						return flag;
					}					
				 });
			 doFiles(files,zipos,true);
			 zipos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 压缩时对文件和目录进行处理
	 * @param 某目录下面的所有文件和目录
	 * @param zip数出流
	 * @param 是否是要压缩的顶级目录
	 */
	public static void  doFiles(File[] files,ZipOutputStream zipos,boolean isFrist){
		InputStream inputStream =null;
		ZipEntry zipEntry = null;
		try {
			for(int i =0;i<files.length;i++){	
				 if(!files[i].isDirectory()){				 
					 inputStream = new FileInputStream(files[i]);
					 if(isFrist==false){
					    zipEntry = new ZipEntry(files[i].getParentFile().getName()+File.separatorChar+files[i].getName());
					 }else{
						 zipEntry = new ZipEntry(files[i].getName()); 
					 }
					 zipos.putNextEntry(zipEntry);
					 int count =0;
					 while((count=inputStream.read())!=-1){
						 zipos.write(count);
					 }		
					 inputStream.close();
				 }else{
					 File[] files1 = files[i].listFiles();
					 doFiles(files1,zipos,false);
				 }				 
			 }			 
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 解压缩文件
	 */
  public  void unzipFiles(String zipFilePath){
	  String outDir = "d:/unzipXml";
	  try {
		File unzipDir = new File(outDir);
		  ZipFile unzipFile = new ZipFile(zipFilePath);
		  Enumeration e = unzipFile.getEntries();
		  InputStream  zipis = null;
		  ZipEntry zipEntry;
		  while(e.hasMoreElements()){
			  zipEntry = (ZipEntry) e.nextElement();
			  zipis =  unzipFile.getInputStream(zipEntry);
			  if(zipEntry.isDirectory()){
				  File file = new File(outDir,zipEntry.getName());
				  if(!file.exists()){
					  file.mkdirs();
				  }
			  }else{
				  if(zipEntry.getName().indexOf("/")>0){
					File file = new File(outDir+File.separatorChar+zipEntry.getName().substring(0,zipEntry.getName().indexOf("/")));
					if(!file.exists()){
						file.mkdirs();
					}
				  }
			      File file = new File(outDir,zipEntry.getName());			      
		          OutputStream os = new FileOutputStream(file);
		          DataOutputStream dos = new DataOutputStream(os);              
		          int count = 0;
		          while((count = zipis.read())!=-1){
		        	    dos.write(count);
		          }
		          zipis.close();
		          os.close();
		          dos.close();
			  }
		  }		  		 
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
  }
}

 

 

本人原创。欢迎转载!

【论文精度】生成式预训练模型——BART(Bidirectional and Auto-Regressive Transformers) ​ BART是一个预训练的seq2seq的去噪自编码(denoising autoencoder)模型,BART以下方式进行训练①用任意的噪声函数(noising function)去破坏文本;②学习一个模型来重建原始文本。它使用一个标准的基于transformer的神经机器翻译架构,可以看作是BERT(双向编码器)、GPT(left-to-right解码器)以及其他预训练方案的推广。 阅读详情

相关推荐

Qwen3-VL、Qwen3-Next与Qwen3.5多模态架构深度解剖

多模态大模型的核心不在参数规模,而在于视觉与文本如何协同建模。本文从基础概念切入,解析视觉语言模型中视觉编码器、跨模态注意力、特征对齐与token压缩等关键原理;阐述ViT、CLIP-ViT及动态压缩模块(HDTC)在语义表征、空间感知与计算效率上的技术权衡;强调结构设计如何决定模型在医学影像、工业质检、遥感分析等高要求场景中的真实能力边界;最终聚焦通义千问最新三套VL架构——Qwen3-VL、Qwen3-Next与Qwen3.5——揭示其背后迥异的融合哲学与工程取舍,为选型、微调与推理优化提供底层依据。

weixin_33778544的博客 818

【文件压缩】用Java实现文件压缩和解压

用Java实现一个简单的GUI和文件压缩解压操作。最终效果如下。实际上这个程序主要分为两个部分,分别是图形界面的部分和文件处理的部分。图形界面:用JTextField类实现文本的输入,通过继承ActionListener接口实现反馈操作swing和awt是java中处理图形界面的类。Java的图形界面分为容器container和组件JComponent,容器上可以添加组建。JPanel一般作为容器...

weixin_40841416的博客 1785

Matlab信号处理

Matlab信号处理 需要安装的APP: Signal Analyzer app:提供一个可以在时域和频域可视化、测量、分析和比较信号的工具; Filter Builder和Filter Designer app:可以很方便通过下拉菜单和填写参数的方式来设计和分析数字滤波器; 对于小波分析,Matlab提供了: 1.Wavelet Signal Denoise app:利用离散小波变换对信号去噪; 2.Signal Multiresolution Analyzer app:对信号进行多分辨率的分析和可视化

Huichin_Min的博客 4399

SM3加密与解密校验

SM3密码杂凑算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。具体算法标准原始文本参见参考文献[1]。该算法于2012年发布为密码行业标准(GM/T0004-2012),2016年发布为国家密码杂凑算法标准(GB/T32905-2016)。SM3适用于商用密码应用中的数字签名和验证,是在[SHA-256]基础上改进实现的一种算法,其安全性和SHA-256相当。SM3和MD5的迭代过程类似,也采用Merkle-Damgard结构。消息分组长度为512位,摘要值长度为256位。...

weixin_42123075的博客 3万+

DC算法竞赛——北京PM2.5浓度回归分析

北京PM2.5浓度回归分析 比赛结果(118/1150) 一. 概述 1、项目来源:https://www.dcjingsai.com/static_page/cmpList.html 2、给定数据字段如下: 3、使用方法:回归算法 4、目的:预测北京pm2.5值,使平均预测误差越小越好。 二、分析过程 setwd("E:/R数据源") #读入数据 data <- read.csv('p...

玻璃球的博客 3474

YOLOv10有效涨点专栏目录 | 包含卷积、主干、检测头、注意力机制、Neck、二次创新、独家创新等上百种创新机制

Hello,各位读者们好本专栏自开设以来已经更新改进教程100余篇其中包含二次创新、独家创新多种改进方法,包含C2f、主干、检测头、注意力机制、Neck多种结构,也有损失函数和一些细节点上的创新。同时本人一些讲解视频和包含我所有创新的YOLOv10文档并不能在优快云上传,通过建立交流群的形式在内上传我完整的文件和视频我也会在群内不定期和大家交流回答大家问题。专栏介绍。

Snu77的博客 1万+

Java实现MD5和国密SM3摘要算法

JDK提供的MD5摘要算法以及国密SM3算法实现

阿鹏的博客 5753

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

NPU(Neural Processing Unit) 是专门用于人工神经网络推理与训练的处理器,具备高并行、低功耗、低延迟等特点。它是边缘 AI、自动驾驶、智能摄像头、语音识别等场景中的关键硬件。

moton2017的博客 2248

Java对文件压缩/加密/解密/解压缩的例子,DES/RSA

RSA压缩加密/解压缩解密 importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.ObjectInputStream; importjava.io.ObjectOutputStream; importjava.security.K...

cuker919的专栏 289

STM32步进电机控制三大方案:GPIO/定时器/PWM深度对比

步进电机控制是嵌入式运动控制的基础技术,其核心在于精确生成脉冲(PUL)、方向(DIR)和使能(EN)三路数字信号。原理上,脉冲频率决定转速,脉冲数量决定位置,方向电平决定转向,而使能时序保障驱动器可靠启停。该技术具有高定位精度、开环稳定性与低成本优势,广泛应用于3D打印机、CNC设备、自动化产线等场景。在STM32平台实现时,需兼顾硬件隔离设计(如6N137光耦)、HAL库抽象封装及实时性约束。本文围绕GPIO模拟、定时器中断与PWM比较输出三种主流方法,系统剖析其时序机制、CPU开销、抗干扰能力与工业适

weixin_35755640的博客 86

13、基因相似性度量的相关性及特征选择研究

本文研究了基因相似性度量和特征选择在生物学中的应用,详细介绍了GO术语相似性度量的多种方法,包括语义度量和路径长度度量,并分析了不同方法在酵母和人类数据集上的表现。研究发现,Avg-sum方法和基于路径长度的度量在多数情况下效果较好。此外,通过晚期辐射毒性预测的案例研究,探讨了特征选择的重要性及可能面临的过拟合和噪声干扰问题,并提出了相应的解决策略。

js777的博客 127

国密SM2的前端加密,后端解密(Java版本)及SM3 摘要加密

一、简介 国密即国家密码局认定的国产密码算法。常用的主要有SM2,SM3,SM4。 SM2:椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。 SM3:消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。 SM4:对称加密,密钥长度和分组长度均为128位。 由于国际环境(与美国的关系),我们在加密领域也基本切换为国密算法。 在有些项目中,没有使用HTTPS的时候,登录的口令(用户名/密码)

m0_57227221的博客 6299

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文件下载时直接对流进行zip加密压缩

下载文件时直接对流进行zip加密压缩 1、使用form提交表单,请求下载.do 2、使用zip4j_1.3.1.jar <span style="white-space:pre"> </span>/** * 下载对账账单明细文件 * * @param request * @param response * @return * @throws Exception */ public ModelAndView downloadCheckBill(H

lisheng19870305的专栏 8101

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java实现文件的压缩和解压

java实现文件的压缩和解压 java实现文件的压缩和解压 代码压缩实现 package com.hjh.demo.zip; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileO...

w1366352655的博客 463

java 压缩pdf_java实现文件的压缩和解压

代码压缩实现package com.hjh.demo.zip;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStr...

weixin_29863809的博客 2550

JAVA实现多文件压缩和解压缩

[使用java进行压缩和解压缩] 亲测可用: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; im

技术人生 9233

java实现文件的解压_java实现文件的压缩和解压缩

压缩:package com.sichang.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.zip.ZipEntry;impor...

weixin_36377344的博客 496

Java实现文件压缩和解压

ZipOutputStream(压缩流)此类为以 ZIP 文件格式写入文件实现输出流过滤器。ZipInputStream(解压流)此类为读取 ZIP 文件格式的文件实现输入流过滤器。

【有梦想的菜】的博客 1370

Java实现压缩文件和解压文件

JAVA 实现将文件或文件夹压缩成 zip,读取 zip 包下的文件。 该工具类功能: 支持压缩单个文件也支持压缩整个文件夹 支持压缩多级目录结构的文件夹 支持压缩空的文件夹 支持读取zip压缩包下的文件,包括多级目录结构的文件夹 一、代码: public class ZipUtils { /** * buffer_size 大小 */ private s...

PZHU_CG_优快云的博客 499

java 压缩_java实现zip文件压缩和解压

最近项目中要使用到有关zip文件的压缩和解压的功能,当然了,这些linux或者cmd命令可以轻松实现,但是LZ试着写了一个java版本的工具类,用起来还不错,有需要的童鞋可以直接拿来用,代码开路。package com.feng.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStre...

weixin_40006763的博客 162

java简单实现文件夹及文件压缩和解压

java简单实现文件夹及文件压缩和解压 前言 网上对文件的操作方法有很多,但多文件夹操作的却很少,最近项目上刚好遇到对文件夹进行导入导出的需求,实现方案为将文件夹以压缩包的形式导出,导入时也以压缩包导入,代码实现压缩包的解压操作。 代码 package com.example.demotest.utils; import java.io.File; import java.io.FileInpu...

weixin_40400242的博客 274

java实现zip文件压缩和解压

Java中实现zip的压缩与解压缩 1 基本概念 ZipOutputStream 实现文件的压缩 ZipOutputStream (OutputStream out) 创建新的zip输出流 void putNextEntry(ZipEntry e) 开始写入新的zip文件条目并将流定位到条目数据的开始处 条目指的是一个文件夹下的多个文件。 ZipEntry(String name) 使用指定名称创建新的zip条目 ZipIutputStream实现文件的...

zhangfeijava的专栏 1376

Java实现赫夫曼编码、解码、文件压缩和解压

11.3 赫夫曼编码 11.3.1 基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法。 赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。 赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在 20%~90%之间 赫夫曼码是可变字长编码(VLC)的一种。Huffman 于 1952 年提出一种编码方法,称之为最佳编码 11.3.2 原理刨析 通信领域中信息的处理方式-----赫夫曼编码 步骤如下: 传输的字符串 i like li

当一个合格的软件工程师 3869

使用Java实现文件的压缩和解压缩

功能:zip压缩、解压说明:本程序通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能.问题:由于java.util.zip包并不支持汉字,当zip文件中有名字为中文的文件时就会出现异常:"Exception in thread "main " java.lang.IllegalArgumentException at java.util.zip.ZipInp

王新友的博客 987

java代码实现文件或文件夹的压缩和解压

这里写了个工具类,可以实现文件的压缩和解压功能。 package com.cntaiping.tpi.common.utils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import jav...

一个java小开发笔记 2627
上一篇: java.lang.NoClassDefFoundError: javax/mail/Authenticator异常
下一篇: ajax 不进入后台的问题
smartfirstme
博客等级 码龄18年 1粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值