`
张豆包
  • 浏览: 16806 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java 文件解压(支持中文,非插件)

    博客分类:
  • Java
阅读更多

java自带有文件解压缩的功能,但很多人都不用,都说其不支持中文。但我只想说,那是他们没有去深入了解java。

现在就说文件的解压功能,使用java自带的zip操作类,支持中文。

 

	public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		//配置文件
//		FileConfigUtil configUtil = FileConfigUtil.getInstance();
//		configUtil.loadFileConfigUtil("D:\\file-upload.properties");
//		FileConfigUtil.getFileUploadConfig();
		//zip文件解压
		
		ParseZipFile zipFile = new ParseZipFile();
		String zipFilePath = "D:/test/错误图片数据.zip";
		String outFilePath = "D:/新建文件夹";
		zipFile.parseZipFile(zipFilePath, outFilePath);
	}

 

 

 

public void parseZipFile(String zipFilePath,String outFilePath){
		if(zipFilePath == null || zipFilePath.isEmpty() 
				|| outFilePath == null || outFilePath.isEmpty()){
			return null;
		}else{
			try {
				//转化为iso_8859_1,用于解压,如若包含中文,会生成失败。
				ZipFile zipFile = new ZipFile(zipFilePath,StandardCharsets.ISO_8859_1);
				ZipInputStream in = new ZipInputStream(new BufferedInputStream(new FileInputStream(zipFilePath)),StandardCharsets.ISO_8859_1);
				ZipEntry zipEntry;
				while ((zipEntry = in.getNextEntry()) != null) {
					if(!zipEntry.isDirectory()){
						File file = new File(outFilePath + "/" + new String(zipEntry.getName().getBytes(
								StandardCharsets.ISO_8859_1), "gbk"));
						System.out.println(file.getName());
						if(!file.exists()) {
							if(!file.getParentFile().exists()){
								file.getParentFile().mkdirs();
							}
							file.createNewFile();
				        }
						FileOutputStream out = new FileOutputStream(file);
						InputStream is = zipFile.getInputStream(zipEntry);
						int readLen = 0;
					    byte[] buffer = new byte[1024 * 8];
					    while ((readLen = is.read(buffer, 0, 1024 * 8)) != -1){
					    	out.write(buffer, 0, readLen);
					    }
						out.close();
						is.close();
					}
				}
				in.close();
				zipFile.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			return null;
		}
	}

 其实在以前的文章中就提过,java本身转换的字符到底是什么格式,很难说。

但在这里,先转化为iso8859然后,再转回gbk。如果转换为utf-8的话,可能会出现乱码。

所以大致可以猜测,在文件这一块,java也许使用的并不是utf-8。

当然,这只是可能。

不过,还是那句话,java的很多定义不可能是无厘头写上去的。只要去深入研究,你会发现解决方法的。

 

分享到:
评论

相关推荐

    Java解压缩文件,尤其对于Rar5.0版本的解压实现.zip

    沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...

    java rar解压工具类

    java rar解压工具类 // 第一个参数是需要解压的压缩包路径,第二个参数参考JdkAPI文档的RandomAccessFile //r代表以只读的方式打开文本,也就意味着不能用write来操作文件

    Java反编译工具把.class文件转换为.java文件

    ### Java反编译工具:将.class文件转换为.java文件 #### 概述 在软件开发领域,有时我们可能需要分析第三方库或者开源项目的内部结构,这时就需要借助于反编译工具来帮助我们阅读和理解其源码。Java作为一种广泛...

    JCOP Eclipse javacard 插件

    【JCOP Eclipse javacard 插件】是一个专为Eclipse集成开发环境设计的扩展工具,主要用于支持Java Card应用的开发、调试和测试。Java Card技术是Sun Microsystems(现为Oracle)推出的一种在智能卡、SIM卡等微型设备...

    个人在用的java属性文件编辑Eclipse插件

    Eclipse作为一款广泛使用的Java集成开发环境(IDE),提供了一系列的插件来增强其功能,其中包括对.properties文件的编辑支持。 标题提到的"个人在用的java属性文件编辑Eclipse插件"是一个专为Eclipse设计的工具,...

    Java反编译插件

    2. **解压下载文件**:将下载的压缩包文件“Java反编译插件”解压,里面通常包含一个.jar文件和一些配置文件。 3. **复制jar文件**:将解压后的.jar文件(如jadclipse.jar)复制到MyEclipse的plugins目录下。 4. *...

    java将Word转换成PDF插件

    通常,解压后会包含一个jar文件,如`jacob.jar`,它包含了JACOB的所有Java类。同时,可能会有一个dll文件,如`jacob.dll`,这是与特定操作系统版本兼容的本地库,需要放在系统路径中才能正确运行。 为了将Word转换...

    Java解压zip文件完整代码分享,使用java代码完成解压zip文件

    压缩包--Java解压zip文件完整代码分享,使用java代码完成解压zip文件

    反编译java class文件的Eclipse插件

    Eclipse作为广泛使用的Java集成开发环境(IDE),有多种插件可以支持对`.class`文件进行反编译。本主题将详细介绍一个专用于反编译Java `.class`文件的Eclipse插件,以及如何将其安装到Eclipse环境中。 反编译是将...

    vm格式文件eclipse插件

    安装过程相对简单,只需将压缩包中的文件解压到Eclipse的插件目录。Eclipse的插件目录通常位于"Eclipse安装路径/plugins"下,但根据不同的操作系统和Eclipse安装方式可能会有所不同。解压前,确保Eclipse已经关闭,...

    JAVA源码Java用GZIP压缩解压文件JAVA源码Java用GZIP压缩解压文件

    java,JAVA源码Java用GZIP压缩解压文件JAVA源码Java用GZIP压缩解压文件

    阿里巴巴Java开发规范插件Eclipse离线安装包

    阿里巴巴Java开发规范插件是专为Java开发者设计的一款工具,旨在提高代码质量和开发效率,遵循阿里巴巴内部制定的一系列编码标准和最佳实践。这个Eclipse离线安装包是为了解决那些无法连接到互联网或者内网环境下的...

    基于java的开发源码-用GZIP压缩解压文件.zip

    基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩...

    Java反编译工具Jad及插件JadClipse配置

    Jad 是一个知名的Java反编译工具,它可以帮助我们查看并理解Java类文件的内部结构。本文将深入探讨Jad的使用以及与之配合的Eclipse插件JadClipse的配置方法。 首先,Jad 是由JAD Software开发的一款强大的Java反...

    svn插件解压版

    3. **放置插件文件**:将解压后的所有文件和文件夹移动或复制到`dropins`目录下。这些文件通常包含`.jar`格式的库文件,它们是插件的核心组件。 4. **重启MyEclipse**:完成上述步骤后,你需要重启MyEclipse,以便...

    java.Tomcat.zip插件解压可用

    本Java.Tomcat.zip插件解压后,将提供一个完整的Tomcat运行环境,使得开发者可以便捷地进行Web应用程序的部署和调试。 首先,我们来了解一下Tomcat的核心功能。Tomcat作为Servlet容器,主要负责解析HTTP请求,调用...

    阿里巴巴-Java开发规范插件-Eclipse离线安装包

    《阿里巴巴Java开发规范插件Eclipse离线安装详解》 在Java开发中,遵循一套统一的编码规范至关重要,它能够提高代码的可读性,降低维护成本,提升团队协作效率。阿里巴巴作为中国领先的互联网企业,推出了针对Java...

    Eclipse语言插件包(中文)

    标签中的"java eclipse 语言包 中文插件包 JAVA语言包"进一步强调了这个插件包主要服务于Java开发者,它不仅适用于Eclipse,也适用于处理Java语言的开发工作。对于那些英语不是母语的开发者而言,这款插件包极大地...

Global site tag (gtag.js) - Google Analytics