`

JAVA解压缩文件——包含嵌套的压缩文件

    博客分类:
  • java
 
阅读更多
今天主要介绍JAVA处理ZIP文件,JAVA提供了相应的类、方法来处理ZIP的压缩文件:

public static boolean zipToFile(String sZipPathFile, String sDestPath) {   
        boolean flag = false;   
        try {   
           FileInputStream fins = new FileInputStream(sZipPathFile);   
           ZipInputStream zins = new ZipInputStream(fins);   
           ZipEntry ze = null;   
           byte ch[] = new byte[256];   
           while ((ze = zins.getNextEntry()) != null) {   
        	   File zfile = new File(sDestPath + "//" + ze.getName());  
               File fpath = new File(zfile.getParentFile().getPath());   
               if (ze.isDirectory()) {   
                    if (!zfile.exists())   
                        zfile.mkdirs();   
                    zins.closeEntry();   
                } else {   
                    if (!fpath.exists())   
                        fpath.mkdirs();   
                    FileOutputStream fouts = new FileOutputStream(zfile);   
                    int i;   
                   String zfilePath = zfile.getAbsolutePath();   
                    while ((i = zins.read(ch)) != -1)   
                        fouts.write(ch, 0, i);   
                   zins.closeEntry();   
                    fouts.close();   
  
                    if (zfilePath.endsWith(".zip")) {   
                       zipToFile(zfilePath, zfilePath.substring(0, zfilePath   
                                .lastIndexOf(".zip")));
                       zfile.delete();
                   }   
 
                }   
            }   
           fins.close();   
           zins.close();   
           // if necessary, delete original zip-file   
//           File file = new File(sZipPathFile);   
//           file.delete();   
           flag = true;   
        } catch (Exception e) {   
            System.err.println("Extract error:" + e.getMessage());   
        }   
        return flag;   
    }


此解压方法支持压缩文件里面嵌套压缩文件(zip格式的压缩文件)

递归获得文件夹下面所有的文件:

public static List<Map> getAllFile(String path)
	{
		if(path.indexOf(".zip")>0)
		{
			zipToFile(path,tempPath);
			getAllFile(tempPath);
		}else{
			File dir = new File(path);
			File[] files = dir.listFiles(); 
			if (files == null) 
			{
				return null; 
			}
			for (int i = 0; i < files.length; i++) { 
				Map map = new HashMap();
				if (files[i].isDirectory()) { 
					getAllFile(files[i].getAbsolutePath()); 
				} else { 
					String filename = files[i].getName();
					if(filename.indexOf(".zip")>0)
					{
						zipToFile(files[i].getAbsolutePath(),tempPath+"\\tempfile_"+i);
						getAllFile(tempPath+"\\tempfile_"+i);
					}else{
						map.put("filepath", files[i].getAbsolutePath());
						map.put("filename", files[i].getName());
						filelist.add(map); 
					}
				} 
			}
		}
		return filelist;
	}
分享到:
评论

相关推荐

    数据库实验报告——数据库嵌套查询

    【实验报告——数据库嵌套查询】 实验报告涵盖了数据库查询的基础和高级操作,特别是关于嵌套查询的使用。嵌套查询是SQL语言中的一个重要概念,它允许我们构建更复杂的查询结构,通过在一个查询内部嵌入另一个查询...

    Java实现压缩与解压缩功能源码

    首先,Java标准库提供了一个名为`java.util.zip`的包,它包含了处理压缩文件所需的类。其中,`ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压缩ZIP文件。 1. **压缩文件**: 要将一个或多...

    Java毕业设计-JAVA文件压缩与解压缩实践(源代码+论文).rar

    3. 文件解压缩:支持解压到指定目录,自动识别和处理压缩包内嵌套的子目录结构。 4. 用户界面友好:提供图形化操作界面,简化用户操作流程。 5. 错误处理完善:对可能出现的异常情况进行捕获和处理,确保程序稳定...

    Java自学之路——超仔细含练习项目及源码 Java知识体系最强总结————含各个阶段的面试题

    它主要包括Java运行环境(JRE)、Java虚拟机(JVM)、编译器、调试器等工具。 - **JDK的分支**:Java目前主要分为OpenJDK和Oracle JDK两大分支。OpenJDK是开源版本,适合对成本敏感的项目;Oracle JDK则是由Oracle...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    这个库简化了在Java中处理压缩文件的过程,提供了丰富的API供开发者使用。 首先,我们来看`FileUtils.java`中的主要方法。通常,这个类会包含两个核心功能:`zipFiles()`用于创建ZIP包,`unzipFile()`用于解压ZIP包...

    java压缩文件代码

    ### Java压缩文件代码详解:基于Zip格式的文件压缩技术 #### 概述 在Java编程中,处理文件压缩是一项常见的需求,特别是在数据传输、存储优化或归档管理方面。Java标准库提供了强大的压缩功能,其中最常用的是基于...

    MATLAB——求解for嵌套循环

    本代码主要利用MATLAB工具实现MATLAB——求解for嵌套循环,简单明了,易于理解

    java 打包文件(文件夹)为 zip压缩包 java 压缩文件

    这些类可以用来压缩文件和文件夹。 2. **`ZipOutputStream`**: 这个类是`OutputStream`的一个子类,用于创建zip格式的流式输出。你可以通过添加`ZipEntry`来写入文件到zip档案。每个`ZipEntry`代表压缩包中的一个...

    jdk1.7 64位 解压缩版

    `jre7`文件则是Java运行时环境,用于执行Java应用程序,包含JVM、Java核心类库和其他必要的支持文件。 对于程序员来说,这个解压缩版的JDK1.7适用于那些需要在64位操作系统上使用Java 7进行开发或者运行旧项目的...

    java实现多层嵌套循环参数转换

    在实际项目中,文件`InterfaceAuthManageServiceImpl.java`可能包含了服务层的接口授权管理实现,它可能会使用到上述的多层嵌套循环、参数转换以及数据库操作。而`model_manage_response_group_config.sql`可能是...

    无bug带属性填充包括对象嵌套属性填充与多文件上传及所有标签

    结合提供的压缩包子文件名称"LHMVCPRO",这可能是某个项目或库的名称,可能包含了实现上述功能的代码示例或库文件。具体实现细节可能包括API接口定义、数据库模型、前端界面组件以及相关的测试用例等。 总的来说,...

    java freemark list嵌套导出word

    压缩包中的`freemarker_word`文件夹可能包含示例模板文件和相关的Java代码,用于演示如何使用FreeMarker处理嵌套列表并导出Word文档。这些文件可以作为参考,帮助理解实际操作过程。 通过以上步骤,我们可以利用...

    java try…catch嵌套捕获异常的实例

    在`CatchException_03.java`这个文件中,可能包含了实际的嵌套`try-catch`异常处理代码实例。配合`Java.jpg`可能是一个解释或演示这些概念的图片。为了深入理解,你应该阅读和分析这个源代码文件,并结合图片中的...

    Java精华版 chm Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及Java EE 5.0、Java IO 包中的Decorator模式等

    本Java精华内容深入Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及...

    java 读取ZIP和RAR压缩包的目录结构

    java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;

    安卓Android源码——嵌套TabHost示例.zip

    在XML布局文件中,`TabHost`通常作为根元素,包含`TabWidget`和`FrameLayout`。`TabWidget`的`android:id`应设为`@android:id/tabs`,`FrameLayout`的`android:id`设为`@android:id/tabcontent`。在Java代码中,我们...

    java导入导出xml文件

    本文将深入探讨如何在Java中进行XML文件的导入与导出。 首先,理解XML的基本结构至关重要。XML文件由一系列的元素构成,每个元素都有可能包含子元素或者文本内容。元素通过开始标签 `&lt;tag&gt;` 和结束标签 `&lt;/tag&gt;` ...

    解压缩zip算法

    ZIP文件可以包含一个或多个压缩的文件或目录,甚至可以包含其他ZIP文件,形成嵌套结构。在本文中,我们将深入探讨ZIP压缩算法以及如何进行解压缩。 ### ZIP文件结构 ZIP文件的内部结构遵循一种特定的格式,主要...

    json转对象(java 多级嵌套)

    例如,如果`InnerObject`还包含另一个嵌套的JSON对象,只需在Java类中添加相应的字段并定义相应的getter和setter即可。`ObjectMapper`会根据JSON结构解析并填充Java对象。 5. **反向操作:Java对象转JSON** 除了将...

Global site tag (gtag.js) - Google Analytics