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;
}
}
}
相关推荐
### Java文件打包知识点详解 在Java开发过程中,经常会遇到需要将多个类文件、资源文件等进行打包处理的情况,以便于程序的部署与分发。本文将详细介绍如何通过命令行方式来实现Java文件的打包,并结合具体的示例...
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包
Java文件打包是一个重要的过程,它将Java源代码及其相关资源组织成一个可执行的格式,以便用户能够方便地运行和分发。这个过程通常涉及到多个步骤,包括编译、构建和打包。以下是对这个主题的详细说明: 1. **Java...
在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...
Java程序打包为Jar文件在Eclipse中的实现 Java程序员在开发过程中经常会遇到这样一个问题:如何将编写好的Java程序打包成一个可执行的Jar文件?在Eclipse中,我们可以通过简单的步骤将Java程序打包成Jar文件,本文...
对于"java操作mongoDB实现文件上传预览打包下载"这个主题,我们将深入探讨如何利用Java与MongoDB交互,实现文件的上传、下载、预览以及打包下载等功能。 首先,我们需要在Java项目中引入MongoDB的驱动库,通常是...
- 用户请求打包:在Web应用中,用户可能通过点击按钮触发打包下载操作,这将触发一个后台服务或Servlet处理请求。 - 服务端处理:服务端首先根据用户选择的文件路径,读取每个文件并将其添加到压缩包中。 - 创建...
本文将深入探讨如何在Java中实现文件的加密和打包,基于提供的"JAVA文件加密打包实例"进行详细讲解。 首先,我们要了解文件加密的概念。文件加密是通过特定的算法将原始数据转化为密文,以防止未经授权的访问或窃取...
### Java打包成可执行文件步骤详解 在Java开发过程中,将编写好的程序打包成一个可执行文件是非常常见的需求。这不仅方便程序的分发与部署,还能提高程序的可用性。本文将通过一个具体的示例来详细介绍如何将Java...
本打包下载包含48款不同的JAVA手机游戏,为用户提供了丰富的娱乐选择。 Java游戏开发的关键知识点: 1. **Java ME(Micro Edition)平台**:Java ME是Oracle公司推出的一种轻量级Java平台,专为资源有限的移动设备...
Java项目打包工具是开发人员在完成Java应用程序或Web应用程序开发后,用来整合资源、编译代码、处理依赖、生成可部署文件的重要工具。这些工具帮助开发者将源代码、配置文件、库和其他资源组织成便于分发和运行的...
本文档将详细介绍 Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总。Java 是一种流行的编程语言,广泛应用于软件开发、Android 应用开发和 Web 开发等领域。然而,在将 Java 项目打包成可执行文件时,...
在Java编程环境中,将多个Excel文件打包成ZIP文件并实现下载功能是一项常见的需求,尤其是在数据导出或批量处理场景中。下面将详细讲解这个过程涉及的主要知识点。 首先,我们需要了解Java中的`java.util.zip`包,...
在Java编程中,将代码打包成可执行文件是常见的需求,尤其在分发软件或部署应用程序时。这个过程通常涉及到JAR(Java Archive)文件的创建,它是一种用于收集多个类文件、相关的元数据和资源文件的容器。下面将详细...
Java后台批量下载文件并压缩成zip下载的方法 Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考...
java 实现指定目录下的文件打包zip格式 并指定存放zip包
在Java编程环境中,实现服务器上多个文件的打包、下载及后续的删除操作是常见的任务,尤其在文件管理和Web服务场景中。以下将详细介绍如何通过Java实现这个功能。 首先,我们需要理解涉及的技术点: 1. **文件操作...
web项目基于Response对象实现。