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 rar解压工具类 // 第一个参数是需要解压的压缩包路径,第二个参数参考JdkAPI文档的RandomAccessFile //r代表以只读的方式打开文本,也就意味着不能用write来操作文件
基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩...
反编译java class文件的Eclipse插件,解压后将文件分别copy到对应的features 和plugins目录即可
Eclipse离线安装SVN插件,将该文件解压后直播复制到你Eclipse安装目录下的dropins目录里即可。比如说你eclipse安装在 D:\eclipse\ ,你解压后将subclipse下的文件拷贝到下面目录里重新Eclipse就可以了。D:\eclipse\...
java project 在tomcat下调试插件,解压后存放在eclipse--features目录下,具体使用请参照包下readme.html文件
第三步、我们把第二个文件解压、得到一个jad.exe文件、我们可以把这个文件放在我们想放的任何位置、例如:D:\123\abc这个路径下。随后我们只要在Windows——>Perference——>Java——>JadClipse下设置path to ...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
java桌面反编译插件jd-gui直接解压使用,可以文件直接拖动进去,或者自己在里面选择,容易用。。
用Eclipse的一个第三方插件fatjar生成jar文件,也是本人觉得最简单最方便的一种生成方式。先从网上下载些插件,解压后是一个plugins的文件夹,里面只有一个文件夹,我的是“net.sf.fjep.fatjar_0.0.24”将它copy到...
java图形界面编程可视化组件插件,只需要把文件解压 复制到myeclipse的安装路径下,修改link文件中的路径即可
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
支持3.2 3.5 3.5本人在用,只要解压后放到dropins文件夹下即可使用
eclipse 反编译插件 java工具JadClipse 将JadClipse插件(net.sf.jadclipse_3.3.0.jar)拷贝到{EclipseHome}/plugins文件夹下(如C:\Program F\eclipse-jee-kepler-R-win32-x86_64\eclipse\plugins)。JAD 解压到...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
文件太大,无法上传,请联系... 2008年6月修正了生成自定义MVC框架时的包名不能自定义的bug,修正了MYECLIPSE5.5开发struts1.3的bug 自定义MVC框架时加入了批量生成功能,支持多选文件 加入了运行前的提示框
startUML java插件 操作步骤: 1.在这个目录:可能有差异 C:\Users\Administrator\AppData\...2.将文件解压,进入到文件夹,拷贝所有文件到新建的staruml.java 中 3.重启startUML tools-java 就可以看到java了
eclipse Java 反编译插件,先将文件解压出来变成jd-eclipse-site-1.0.0-RC2.zip,Help > Install New Software...>Add(jd-eclipse-site-1.0.0-RC2.zip)>next>next>Finish添加就可以了使用了
eclipse中文语言插件包,适用于eclipse-jee-2019-06-R-win32-x86_64版本 使用方法:解压后,将相关文件覆盖至对应目录即可