一个Java读取压缩包并上传文件 例子
package com.bsteel.newbase.admin.uploadfile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.bsteel.newbase.admin.uploadfile.form.UpLoadFileForm;
import com.bsteel.rscenter.util.Constants;
public class UpLoadFileAction extends Action {
protected Log log = LogFactory.getLog(getClass());
private static final String filePath = "/WEB-INF/classes/config/config.properties";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UpLoadFileForm uploadfileform = (UpLoadFileForm) form;
if (StringUtils.defaultString(uploadfileform.getJSP_PATH()).equals(
"upload")) {
if (uploadfileform.getUpLoadFileName() == null
|| uploadfileform.getTemplate() == null
|| "".equals(uploadfileform.getUpLoadFileName())
|| "".equals(uploadfileform.getTemplate())) {
request.setAttribute("showok", "0");
return mapping.findForward("success");
}
// 读取文件信息
System.out.println("uploadfileform.getTheFile()="
+ uploadfileform.getUpLoadFileName());
FormFile theFile = uploadfileform.getUpLoadFileName();
// 判断上传文件类型及规定"cbf"
String fileName = theFile.getFileName();
int pos = fileName.lastIndexOf(".");
String postfix = fileName.substring(pos + 1).trim();
String cbfstr = fileName.substring(0, 3).trim();
System.out.println("postfix=" + postfix);
if (!postfix.equalsIgnoreCase(Constants.FILE_ZIP)
|| !cbfstr.equals("cbf")) {
request.setAttribute("showok", "1");
return mapping.findForward("success");
} else {
// 备份原有文件
removeFiles(uploadfileform.getTemplate());
// 上传文件
try {
String[] path = loadConfig();
unzip(theFile, path[0], uploadfileform.getTemplate());
request.setAttribute("showok", "2");
log.info("文件上传成功!");
} catch (Exception e) {
log.info("上传文件失败:" + e.getMessage());
}
}
}
return mapping.findForward("success");
}
/**
* 读取资源文件
*
* @return
*/
private String[] loadConfig() {
Properties config = new Properties();
String[] properties = new String[2];
try {
InputStream is = getClass().getResourceAsStream(filePath);
if (is == null) {
return null;
} else {
config.load(is);
properties[0] = config.getProperty("datapath");
properties[1] = config.getProperty("bakpath");
}
return properties;
} catch (Exception ex) {
return null;
}
}
/**
*
* 备份同类型文件
*/
private void removeFiles(String str) {
SimpleDateFormat formatDate = new SimpleDateFormat("yyMMdd");
String[] path = loadConfig();
File f = new File(path[0]);
if (f.exists()) {
File[] fileList = f.listFiles();
for (int i = 0; i < fileList.length; i++) {
String filename = fileList[i].getName();
int beginInt = filename.indexOf("_") + 1;
int endInt = filename.indexOf(".");
if (filename.substring(beginInt, endInt).equals(str)) {
fileList[i].renameTo(new File(path[1]
+ fileList[i].getName()
+ formatDate.format(new Date()) + ".bak"));
log.info("remove file ->" + fileList[i].getName());
}
}
}
}
/**
*
* 上传zip文件
*/
public void unzip(FormFile thefile, String outputDirectory, String str) {
try {
ZipInputStream in = new ZipInputStream(thefile.getInputStream());
ZipEntry z = in.getNextEntry();
while (z != null) {
String zipsName = z.getName();
// 提取压缩包中的xml文件
int pos = zipsName.lastIndexOf(".");
String postXml = zipsName.substring(pos + 1).trim();
if (postXml.equalsIgnoreCase(Constants.FILE_XML)) {
File f = new File(outputDirectory);
f.mkdir();
if (z.isDirectory()) {
f = new File(outputDirectory + "documents_" + str + "."
+ Constants.FILE_XML);
f.mkdir();
} else {
f = new File(outputDirectory + "documents_" + str + "."
+ Constants.FILE_XML);
f.createNewFile();
FileOutputStream out = new FileOutputStream(f);
int b;
while ((b = in.read()) != -1) {
out.write(b);
}
out.close();
}
// 读取下一个ZipEntry
z = in.getNextEntry();
}
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
文章引自:http://blog.163.com/yangjuqi@126/blog/static/28452285200791192638761/
分享到:
相关推荐
使用Java远程上传压缩包到服务器,或者在服务器上拉去压缩包或者文件,在服务器上创建目录。
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形...该方法通过java代码实现将shp文件的数据读取以及存入数据库
/** * 根据 策划的配置表来生成 json * excel 目前使用的版本为2007,其他版本未测试... * 读取文件 一般用于本地文件的生成, * 二进制的方式,一般用于 后台管理界面 的文件上传后的处理。 * @author wgq * */
本工程用于研究如何使用Java代码获取文件、文件流或字符串的编码方式 本工程编码方式:UTF-8 开发工具:MyEclipse 参考博客:http://blog.csdn.net/gaohuanjie/article/details/43735891
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
java web前端上传文件到后台常用三种方式,包括from表单提交、ajax提交、FormData对象提交,框架采用Spring Boot。
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
序列号说明: 名稱:Macintosh S/N:GZ0NX-ZWHAH-A50W1-2W28Z-X7TYU-L4FMT
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...