`

java文件打包下载

 
阅读更多
package com.abchina.swdx.os.contactdept.web.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

import com.abchina.swdx.os.contactdept.service.IInfocService;
import com.abchina.swdx.os.contactdept.service.IInfocsbryService;
import com.abchina.swdx.os.contactdept.web.vo.InfocVO;
import com.abchina.swdx.os.contactdept.web.vo.InfocsbryVO;
import com.abchina.swdx.sysset.comm.web.vo.SysSetVO;

public class WjxzAction {
	
	private IInfocService infocService;
	
	private IInfocsbryService infocsbryService;
	
	private SysSetVO sysSetVO;
	
	private InfocVO infocVO;
	
	private InfocsbryVO infocsbryVO;
	
	private List<InfocsbryVO> infocsbryVOList = null;
	
	public List<InfocsbryVO> getInfocsbryVOList() {
		return infocsbryVOList;
	}

	public void setInfocsbryVOList(List<InfocsbryVO> infocsbryVOList) {
		this.infocsbryVOList = infocsbryVOList;
	}

	public IInfocService getInfocService() {
		return infocService;
	}

	public void setInfocService(IInfocService infocService) {
		this.infocService = infocService;
	}

	public IInfocsbryService getInfocsbryService() {
		return infocsbryService;
	}

	public void setInfocsbryService(IInfocsbryService infocsbryService) {
		this.infocsbryService = infocsbryService;
	}

	public SysSetVO getSysSetVO() {
		return sysSetVO;
	}

	public void setSysSetVO(SysSetVO sysSetVO) {
		this.sysSetVO = sysSetVO;
	}

	public InfocVO getInfocVO() {
		return infocVO;
	}

	public void setInfocVO(InfocVO infocVO) {
		this.infocVO = infocVO;
	}

	public InfocsbryVO getInfocsbryVO() {
		return infocsbryVO;
	}

	public void setInfocsbryVO(InfocsbryVO infocsbryVO) {
		this.infocsbryVO = infocsbryVO;
	}

	/***
	 * 下载上报附件
	 */
	public void getInofcsbryfiles(){
		HttpServletResponse response  = ServletActionContext.getResponse();
    	HttpServletRequest request = ServletActionContext.getRequest();
    	response.setCharacterEncoding("UTF-8");
    	response.setContentType("text/html;charest=UTF-8");
    	String bdpath = request.getSession().getServletContext().getRealPath("/"); //项目本地路径
    	if(null==infocsbryVOList){
    		infocsbryVOList = new ArrayList<InfocsbryVO>();
    	}
    	infocsbryVO.setFjname("1");
    	infocsbryVOList=infocsbryService.findInfocsbryByWhereSB(infocsbryVO);
    	if(null==infocVO){
    		infocVO = new InfocVO();
    	}
    	infocVO.setId(infocsbryVO.getInfocid());
    	infocVO = this.infocService.findInfocByKey(infocVO);
    	String title = infocVO.getTitle();
    	try {
	    	File filexxsb = new File(bdpath+"/"+title);//根目录+title
	    	if(!filexxsb.exists()){
	    		filexxsb.mkdirs();
	    	}
			for(int j=0;j<infocsbryVOList.size();j++){
				String orgname = infocsbryVOList.get(j).getOrgname().toString();
				orgname=orgname.replaceAll("/", "-");
				File filesbFolder = new File(filexxsb+"/"+orgname+"("+infocsbryVOList.get(j).getName().toString()+")");
				if(!filesbFolder.exists()){
					filesbFolder.mkdirs();
				}
				//将班级活动文件拷贝到新的目录中   //注意 如果是用控件上传方法需要加"/uploads/"
				//String pp =  filesbFolder+"/"+infocsbryVOList.get(j).getFjname().toString();
				//System.out.println(pp+"!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
				copyFile(bdpath+"/uploads/"+infocsbryVOList.get(j).getFjpath().toString(),filesbFolder+"/"+infocsbryVOList.get(j).getFjname().toString());
			}
			WjxzAction book = new WjxzAction();
			book.zip(bdpath+"/"+title,title);
//			//删除创建的临时文件夹
	        WjxzAction wjgl = new WjxzAction();
	        wjgl.DeleteFolder(bdpath+"/"+title);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 复制单个文件
	 * @param oldPath
	 * @param newPath
	 */
	public void copyFile(String oldPath, String newPath) { 
	       try { 
	           int bytesum = 0; 
	           int byteread = 0; 
	           File oldfile = new File(oldPath); 
	           if (oldfile.exists()) { //文件存在时 
	               InputStream inStream = new FileInputStream(oldPath); //读入原文件 
	               FileOutputStream fs = new FileOutputStream(newPath); 
	               byte[] buffer = new byte[1444]; 
	               while ( (byteread = inStream.read(buffer)) != -1) { 
	                   bytesum += byteread; //字节数 文件大小 
	                   fs.write(buffer, 0, byteread); 
	               } 
	               fs.close();
	               inStream.close(); 
	           } 
	       } 
	       catch (Exception e) { 
	           System.out.println("复制单个文件操作出错"); 
	           e.printStackTrace(); 
	       } 
	   } 
	
	/**   
     *    
     * @param inputFileName 输入一个文件夹   
     * @param zipFileName   输出一个压缩文件夹,打包后文件名字   
     * @throws Exception   
     */    
    public void zip(String inputFileName, String zipFileName) throws Exception {     
        zip(zipFileName, new File(inputFileName));     
    }     
    
    private void zip(String zipFileName, File inputFile) throws Exception {     
    	HttpServletResponse response  = ServletActionContext.getResponse();
    	response.setContentType("APPLICATION/OCTET-STREAM");
		response.setHeader("Content-Disposition", "attachment; filename="
				+new String(zipFileName.getBytes("gb2312"),"iso8859-1") + ".zip");
		ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
        zip(out, inputFile, ""); 
        out.setEncoding("GB2312");
        out.flush();
        out.close();   
    }     
    
    private void zip(ZipOutputStream out, File f, String base) throws Exception {
        if (f.isDirectory()) {//判断是否为目录     
            File[] fl = f.listFiles();     
//            out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));     
            out.putNextEntry(new ZipEntry(base + "/"));
            base = base.length() == 0 ? "" : base + "/"; 
            for (int i = 0; i < fl.length; i++) {     
            	zip(out, fl[i], base + fl[i].getName());     
            }     
        	}else{//压缩目录中的所有文件     
//            out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));     
            out.putNextEntry(new ZipEntry(base));     
            FileInputStream in = new FileInputStream(f);     
            int b;     
            while((b = in.read()) != -1){     
            	out.write(b);
            }     
            in.close();
        }     
    }  
    
    
    /** 
     *  根据路径删除指定的目录或文件,无论存在与否 
     *@param sPath  要删除的目录或文件 
     *@return 删除成功返回 true,否则返回 false。 
     */  
    public void DeleteFolder(String sPath) {  
        File file = new File(sPath);  
        // 判断目录或文件是否存在  
        if (file.exists()) {  
            // 判断是否为文件  
            if (file.isFile()) {  // 为文件时调用删除文件方法  
                deleteFile(sPath);  
            } else {  // 为目录时调用删除目录方法  
                deleteDirectory(sPath);  
            }  
        }  
    }
    
    /** 
     * 删除单个文件 
     * @param   sPath    被删除文件的文件名 
     * @return 单个文件删除成功返回true,否则返回false 
     */  
    public void deleteFile(String sPath) {  
        File file = new File(sPath);  
        // 路径为文件且不为空则进行删除  
        if (file.isFile() && file.exists()) {  
            file.delete();
        }  
    }
    
    /** 
     * 删除目录(文件夹)以及目录下的文件 
     * @param   sPath 被删除目录的文件路径 
     * @return  目录删除成功返回true,否则返回false 
     */  
    public boolean deleteDirectory(String sPath) {  
        //如果sPath不以文件分隔符结尾,自动添加文件分隔符  
        if (!sPath.endsWith(File.separator)) {  
            sPath = sPath + File.separator;  
        }  
        File dirFile = new File(sPath);  
        //如果dir对应的文件不存在,或者不是一个目录,则退出  
        if (!dirFile.exists() || !dirFile.isDirectory()) {  
            return false;  
        }  
        //删除文件夹下的所有文件(包括子目录)  
        File[] files = dirFile.listFiles();  
        for (int i = 0; i < files.length; i++) {  
            //删除子文件  
            if (files[i].isFile()) {  
                deleteFile(files[i].getAbsolutePath());  
            } //删除子目录  
            else {  
                deleteDirectory(files[i].getAbsolutePath());  
            }  
        }  
        //删除当前目录  
        if (dirFile.delete()) {  
            return true;  
        } else {  
            return false;  
        }  
    } 
	
}

 

  • 大小: 10.2 KB
分享到:
评论

相关推荐

    java文件打包例子

    ### Java文件打包知识点详解 在Java开发过程中,经常会遇到需要将多个类文件、资源文件等进行打包处理的情况,以便于程序的部署与分发。本文将详细介绍如何通过命令行方式来实现Java文件的打包,并结合具体的示例...

    java压缩文件,zip打包

    应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包

    java文件打包

    Java文件打包是一个重要的过程,它将Java源代码及其相关资源组织成一个可执行的格式,以便用户能够方便地运行和分发。这个过程通常涉及到多个步骤,包括编译、构建和打包。以下是对这个主题的详细说明: 1. **Java...

    Java多个文件根据URL下载后打包zip导出.zip

    在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...

    在eclipse中把java文档打包成jar文件

    Java程序打包为Jar文件在Eclipse中的实现 Java程序员在开发过程中经常会遇到这样一个问题:如何将编写好的Java程序打包成一个可执行的Jar文件?在Eclipse中,我们可以通过简单的步骤将Java程序打包成Jar文件,本文...

    java操作mongoDB实现文件上传预览打包下载

    对于"java操作mongoDB实现文件上传预览打包下载"这个主题,我们将深入探讨如何利用Java与MongoDB交互,实现文件的上传、下载、预览以及打包下载等功能。 首先,我们需要在Java项目中引入MongoDB的驱动库,通常是...

    java实现下载打包java实现下载打包

    - 用户请求打包:在Web应用中,用户可能通过点击按钮触发打包下载操作,这将触发一个后台服务或Servlet处理请求。 - 服务端处理:服务端首先根据用户选择的文件路径,读取每个文件并将其添加到压缩包中。 - 创建...

    JAVA文件加密打包实例

    本文将深入探讨如何在Java中实现文件的加密和打包,基于提供的"JAVA文件加密打包实例"进行详细讲解。 首先,我们要了解文件加密的概念。文件加密是通过特定的算法将原始数据转化为密文,以防止未经授权的访问或窃取...

    Java打包成可执行文件步骤详解

    ### Java打包成可执行文件步骤详解 在Java开发过程中,将编写好的程序打包成一个可执行文件是非常常见的需求。这不仅方便程序的分发与部署,还能提高程序的可用性。本文将通过一个具体的示例来详细介绍如何将Java...

    48款JAVA手机游戏打包下载 [JAR经

    本打包下载包含48款不同的JAVA手机游戏,为用户提供了丰富的娱乐选择。 Java游戏开发的关键知识点: 1. **Java ME(Micro Edition)平台**:Java ME是Oracle公司推出的一种轻量级Java平台,专为资源有限的移动设备...

    java项目打包工具

    Java项目打包工具是开发人员在完成Java应用程序或Web应用程序开发后,用来整合资源、编译代码、处理依赖、生成可部署文件的重要工具。这些工具帮助开发者将源代码、配置文件、库和其他资源组织成便于分发和运行的...

    Java打包成jar文件,以及将jar文件导出为exe文件方法汇总[汇编].pdf

    本文档将详细介绍 Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总。Java 是一种流行的编程语言,广泛应用于软件开发、Android 应用开发和 Web 开发等领域。然而,在将 Java 项目打包成可执行文件时,...

    java中将多个excel打包成zip文件下载.rar

    在Java编程环境中,将多个Excel文件打包成ZIP文件并实现下载功能是一项常见的需求,尤其是在数据导出或批量处理场景中。下面将详细讲解这个过程涉及的主要知识点。 首先,我们需要了解Java中的`java.util.zip`包,...

    java 打包可执行文件

    在Java编程中,将代码打包成可执行文件是常见的需求,尤其在分发软件或部署应用程序时。这个过程通常涉及到JAR(Java Archive)文件的创建,它是一种用于收集多个类文件、相关的元数据和资源文件的容器。下面将详细...

    java后台批量下载文件并压缩成zip下载的方法

    Java后台批量下载文件并压缩成zip下载的方法 Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考...

    java 实现指定目录下的文件打包zip格式 并指定存放zip包

    java 实现指定目录下的文件打包zip格式 并指定存放zip包

    用java实现服务器上多个文件先打包,然后下载

    在Java编程环境中,实现服务器上多个文件的打包、下载及后续的删除操作是常见的任务,尤其在文件管理和Web服务场景中。以下将详细介绍如何通过Java实现这个功能。 首先,我们需要理解涉及的技术点: 1. **文件操作...

    Java实现单个文件下载、多文件打包下载

    web项目基于Response对象实现。

Global site tag (gtag.js) - Google Analytics