`
chengyu2099
  • 浏览: 468922 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

WinRAR上传解压文件

阅读更多
System.getProperty("os.name");   
				if(".rar".equals(endPhoto)){
					System.out.println("开始解压------------------------");
					System.out.println("操作系统名称="+System.getProperty("os.name"));
					if(System.getProperty("os.name").indexOf("Windows")!=-1){
						String cmd = "C:\\Program Files\\WinRAR\\WinRAR.exe x \""+destPathString+"\" *.* \""+_destPathString+"\\\"";
						System.out.println("解压命令="+cmd);
						
						Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象 
						try {
							Process p = run.exec(cmd);// 启动另一个进程来执行命令
		//					BufferedInputStream in = new BufferedInputStream(p.getInputStream());
		//					BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
		//					String lineStr;
		//					while ((lineStr = inBr.readLine()) != null)
		//					//获得命令执行后在控制台的输出信息
		//					2System.out.println(lineStr);// 打印输出信息
		//					//检查命令是否执行失败
		//					if (p.waitFor() != 0) {
		//				 		if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束 
		//						System.err.println("命令执行失败!");
		//					}
		//					inBr.close();
		//					in.close();
						} catch (Exception e) {
							e.printStackTrace();   
						}   
					}else{
						System.out.println("非Windows系统");
					}

------------------------------------------------------------------
package com.linkage.manage.abate.action;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.linkage.core.po.TbAbate;
import com.linkage.core.ui.WebworkBaseAction;
import com.linkage.manage.abate.action.bean.AbateConstant;
import com.linkage.manage.abate.service.AbateService;
import com.linkage.util.FileUtilTwo;
import com.linkage.util.ImageCompressHead;
import com.linkage.util.exception.BOException;
import com.opensymphony.webwork.ServletActionContext;
/**
 * 
 * ClassName:AbateAction
 * Project: 
 * Company: LINKAGE
 *
 * @author   chengYu
 * @version  
 * @since    Ver 1.1
 * @Date	 2010	Mar 5, 2010		3:21:05 PM
 *
 * @see
 */
public class AbateAction extends WebworkBaseAction
{
	private AbateService abateService;
	private final static Logger log = LoggerFactory.getLogger(AbateAction.class);
	/**
	 * 文件上传
	 */
	private File[] files; // 多个文件对象数组
	
	private String[] filesFileName; // 文件对应的真实文件名 单个文件上传时不需要此属性定义
	
	private String filesContentType;
	
	/***
	 * @author chengRenYin
	 * queryAbate.action
	 * query * manage * abate goods
	 */
	public String queryAbate()
	{
		log.info("************* queryAbate *****************");
		List<TbAbate> abateList = null;
		try {
			abateList = abateService.queryAbate(AbateConstant.ABATE_SHOW);
			this.getRequest().setAttribute("ABATE_LIST", abateList);
		} catch (BOException e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}
	/***
	 * 
	 * @author chengYu
	 * @email 13813375172@139.com
	 * @createTime Mar 5, 2010
	 * @description .
	 */
	public String cancelAbate()
	{
		log.info("***********cancelAbate.action**************");
		String id = this.getRequest().getParameter("id");
		try {
			abateService.editAbateState(id,AbateConstant.ABATE_HIDE);
			this.getResponse().getWriter().write("");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (BOException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "";
	}
	/**
	 * @author . chengYu
	 * @email . 13813375172@139.com
	 * @createTime .Mar 6, 2010 2:51:19 PM
	 * @parameters . 
	 * @description .
	 */
	public String showAbate()
	{
		log.info("***********cancelAbate.action**************");
		String id = this.getRequest().getParameter("id");
		try {
			abateService.editAbateState(id,AbateConstant.ABATE_SHOW);
			this.getResponse().getWriter().write("");
		} catch (IOException e) {
			e.printStackTrace();
		}catch (BOException e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}
	/**
	 * 
	 * @author chengYu
	 * @email 13813375172@139.com
	 * @createTime Mar 6, 2010
	 * @description .add abate of fileName,photoName
	 */
	public String addAbate()
	{
		log.info("****addAbate.action****");
//		文件上传处理
//		文件夹名
		String fn = "";
		String photoName = "";
		if(files != null)
		{
			TbAbate abate = new TbAbate();
			for(int i=0;i<files.length;i++)
			{
				File file = files[i];
				String tName = filesFileName[i]; // 原文件名字
				
				// 处理中文图片名字不显示 文件 . 格式
				String endPhoto = tName.substring(tName.lastIndexOf("."), tName.length()).toLowerCase();
				
				if(".rar".equals(endPhoto))
				{
					String htmlName = tName.substring(0,tName.length()-4)+".html";
					abate.setFileFolder(tName.substring(0,tName.length()-4));
					abate.setFileName(htmlName);
//					保证只创建一个文件夹
					if("".equals(fn))
					{
						fn = String.valueOf(System.currentTimeMillis() + filesFileName[0].hashCode());
					}
				}else
				{
//					保证只创建一个文件夹
					if("".equals(fn))
					{
						fn = String.valueOf(System.currentTimeMillis() + filesFileName[0].hashCode());
					}
					photoName = String.valueOf(System.currentTimeMillis() + tName.hashCode());
					abate.setPhoto(photoName+endPhoto);
				}
				abate.setFolderName(fn);
				/**
				 *  0 del 1 default
				 */
				abate.setDelState("1");
				abate.setState("1");
//				图片+文件 文件夹 新增字段 - 文件夹名字
				String destPathString = ServletActionContext.getRequest().getRealPath("upload")+File.separator+
				AbateConstant.UPLOAD_ABATE+File.separator+fn+file.separator+photoName+endPhoto;
				
				String _destPathString = ServletActionContext.getRequest().getRealPath("upload")+File.separator+
				AbateConstant.UPLOAD_ABATE+File.separator+fn;  // 解压后的路径
				
				System.out.println("destPathString = "+destPathString+"\n"+file.getPath());
				FileUtilTwo c = new FileUtilTwo(file.getPath(), destPathString);
				c.doCopy();
				
				System.getProperty("os.name");   
				if(".rar".equals(endPhoto)){
					System.out.println("开始解压------------------------");
					System.out.println("操作系统名称="+System.getProperty("os.name"));
					if(System.getProperty("os.name").indexOf("Windows")!=-1){
						String cmd = "C:\\Program Files\\WinRAR\\WinRAR.exe x \""+destPathString+"\" *.* \""+_destPathString+"\\\"";
						System.out.println("解压命令="+cmd);
						
						Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象 
						try {
							Process p = run.exec(cmd);// 启动另一个进程来执行命令
		//					BufferedInputStream in = new BufferedInputStream(p.getInputStream());
		//					BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
		//					String lineStr;
		//					while ((lineStr = inBr.readLine()) != null)
		//					//获得命令执行后在控制台的输出信息
		//					2System.out.println(lineStr);// 打印输出信息
		//					//检查命令是否执行失败
		//					if (p.waitFor() != 0) {
		//				 		if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束 
		//						System.err.println("命令执行失败!");
		//					}
		//					inBr.close();
		//					in.close();
						} catch (Exception e) {
							e.printStackTrace();   
						}   
					}else{
						System.out.println("非Windows系统");
					}
				}
			}
			try {
				abateService.saveAbate(abate);
			} catch (BOException e) {
				e.printStackTrace();
			}
		}
		
		// 图片压缩处理 - 小图片 small_ xx name
		/*if (fileName.length() > 0)
		{
			ImageCompressHead ic = new ImageCompressHead();
			ic.setImageSmall(destPathString);
		}*/
		return SUCCESS;
	}
	/**
	 * @author . chengYu
	 * @email . 13813375172@139.com
	 * @createTime .Mar 6, 2010 2:43:02 PM
	 * @parameters . AbateConstant.ABATE_HIDE
	 * @description . to show all hide abate
	 */
	public String queryHideAbate()
	{
		log.info("************* queryAbate *****************");
		List<TbAbate> abateList = null;
		try {
			abateList = abateService.queryAbate(AbateConstant.ABATE_HIDE);
			this.getRequest().setAttribute("ABATE_HIDE_LIST", abateList);
		} catch (BOException e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}
	/**
	 * @author . chengYu
	 * @email . 13813375172@139.com
	 * @createTime .Mar 6, 2010 3:00:44 PM
	 * @parameters . id
	 * @description . delete abate
	 */
	public String delAbate()
	{
		log.info("******delAbate******");
		String id = this.getRequest().getParameter("id");
		try {
			abateService.modifyAbate(id);
		} catch (BOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";
	}
//	*******************************************************************************
	/***
	 * @webwork.set
	 * @param AbateService
	 */
	public void setAbateService(AbateService abateService) {
		this.abateService = abateService;
	}
	/**
	 * 
	 * @author chengYu
	 * @email 13813375172@139.com
	 * @createTime Mar 6, 2010
	 * @description . file upload get/set
	 */
	public File[] getFiles() {
		return files;
	}
	public void setFiles(File[] files) {
		this.files = files;
	}
	public String[] getFilesFileName() {
		return filesFileName;
	}
	public void setFilesFileName(String[] filesFileName) {
		this.filesFileName = filesFileName;
	}
	public String getFilesContentType() {
		return filesContentType;
	}
	public void setFilesContentType(String filesContentType) {
		this.filesContentType = filesContentType;
	}
	
	public static void main(String[] args){
	}
	
}
分享到:
评论

相关推荐

    windows下压缩的zip文件,上传到Linux后unzip不认的解决办法

    如果`unzip`不支持,可以尝试在Linux系统中安装其他工具,比如`p7zip`,它是一个兼容7-Zip格式的命令行工具,通常能处理更多类型的压缩文件。 5. **手动转换**: 对于已有的ZIP文件,你可以在Linux下先用`file`...

    将一个文件压缩成多个压缩文件

    对于将大文件分割成多个压缩文件,我们通常需要借助专门的压缩软件,如WinRAR、7-Zip或WinZip。以下是一个简单的步骤概述: 1. **选择压缩工具**:安装并打开压缩软件,如WinRAR,它提供了将大文件分割成多个压缩包...

    asp.net调用RAR实现文件压缩与解压缩图文代码

    ActiveX几乎被废弃),所以如果要想实现让用户把本地文件用网页解压缩只有把文件上传到服务器上再调用服务器上的RAR压缩,同理要解压缩本地的RAR文件可以把文件上传到服务器解压再拿回来。 using System; using ...

    新建 WinRAR 压缩文件.rar_socket文件传输_socket编程

    在本主题“新建 WinRAR 压缩文件.rar_socket文件传输_socket编程”中,我们将深入探讨如何使用Socket进行文件传输,特别是在Windows环境中使用WinRAR创建的RAR压缩文件。 首先,Socket是TCP/IP协议栈的一部分,它...

    winrar分卷解压助手

    "BatchUnRar.exe"是该软件的核心执行文件,其名称中的"Batch"表明它支持批处理操作,即可以同时处理多个压缩文件,这对于处理大量分卷压缩包的用户来说,无疑是极大的便利。通过这个程序,用户可以一次性解压多个...

    Flex上传压缩文件到服务器路径并解压存进数据库

    本示例的主题“Flex上传压缩文件到服务器路径并解压存进数据库”涉及到的技术主要包括Flex客户端开发、服务器端处理、文件上传、文件压缩与解压以及数据库操作。下面将详细讲解这些知识点。 1. **Flex**: Flex是...

    ftp空间上传rar文件解压 程序

    FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,广泛应用于网站的文件上传与下载。...了解这些知识点,结合提供的文件,你就能构建一个自动化、高效地在FTP服务器上处理压缩文件的流程。

    WINRAR 5.5

    1. **压缩与解压**:WinRAR支持多种压缩格式,包括RAR和ZIP,同时也能够解压7Z、ACE、ARJ、BZ2、CAB、GZ、ISO、JAR、LZH、TAR、UUE、Z等常见压缩文件格式。用户可以根据需要选择不同的压缩级别,以平衡压缩率和压缩...

    WinRAR_压缩包.rar

    2. **修复损坏的压缩包**:WinRAR内置的恢复记录和恢复卷功能能在一定程度上修复受损的压缩文件。 3. **密码保护**:用户可以为压缩包设置密码,提供安全防护。 4. **自解压文件**:WinRAR可以创建自解压文件,只需...

    winrar5.5.rar

    4. **增强的修复功能**:当遇到损坏的压缩文件时,WinRAR 5.5提供了更强大的修复工具,能更有效地恢复受损数据,减少数据丢失的风险。 5. **集成的加密技术**:内置的AES-256加密算法,确保了压缩文件的安全性,...

    winrar压缩工具

    3. 网盘上传:压缩文件减少上传时间,尤其对于网络带宽有限的环境。 4. 软件分发:制作自解压文件,简化软件安装过程。 五、总结 WinRAR作为一款强大的压缩工具,不仅提供基础的压缩和解压缩功能,还拥有丰富的...

    RAR压缩文件分割器

    RAR压缩文件分割器是一款工具,专门用于处理大体积的RAR压缩文件,将其分割成多个较小的部分,便于管理和传输。在日常工作中,我们可能会遇到需要发送或存储超大文件的情况,这时RAR文件的分割功能就显得尤为实用。...

    压缩文件的上传和下载

    在IT行业中,压缩文件的上传和下载是日常工作中常见的操作,尤其在文件传输、备份以及协同工作中扮演着重要角色。本话题将详细讲解如何进行压缩文件的上传与下载,以及如何处理中文文件名的问题。 首先,让我们理解...

    winrar-x64-5.21.zip

    3. 更强的修复功能:对于损坏的压缩文件,WinRAR 5.21提供了更强大的修复工具,能尽可能恢复受损文件。 4. 优化的界面:简洁明了的界面设计,让新手也能快速上手,同时提供了丰富的自定义选项,满足高级用户的个性...

    新建 WinRAR ZIP 压缩文件.zip_apds9960_apds9960 stm源码_apds9960代码_settle

    【标题】"新建 WinRAR ZIP 压缩文件.zip_apds9960_apds9960 stm源码_apds9960代码_settle" 提供的信息主要围绕一个与传感器APDS9960相关的开发工作,该工作涉及STM32微控制器的编程。在这一主题中,我们可以深入探讨...

    在线解压缩php文件

    这个扩展提供了一套完整的API,用于读取、创建和修改ZIP格式的压缩文件。要使用`zip`扩展,确保在你的PHP环境中已经安装并启用它。 1. **解压ZIP文件**: PHP的`ZipArchive`类是实现在线解压缩的核心。通过实例化`...

    ASP.NET利用RAR实现文件压缩解压缩

    在提供的代码示例中,我们看到一个简单的 ASP.NET 页面,包含两个按钮,分别用于压缩和解压缩文件。页面加载时没有执行任何特殊操作,而是在用户点击按钮时触发相应的事件处理函数。 1. **压缩文件**: - 在 `...

    多分卷压缩文件解压软件

    1. 分段传输:对于大文件,分卷压缩可以逐个上传或下载,提高了网络传输的效率,尤其在网络不稳定时。 2. 存储管理:在存储空间有限的情况下,可以先解压一部分,而不必等待所有分卷都到位。 3. 方便分享:部分分卷...

    压缩文件合集

    1. 数据传输:压缩文件可减小文件大小,加快网络上传下载速度。 2. 存储优化:在硬盘空间有限的情况下,压缩文件能有效节省空间。 3. 发布分享:发布软件、教程等资料时,压缩打包便于用户下载和管理。 4. 备份与...

    WinRAR3.5经典免注册版

    - **分卷压缩**:允许用户将大文件分割成多个小的压缩文件,方便在容量有限的存储介质上分批传输。 - **修复功能**:具备一定的文件修复能力,能在文件损坏时尝试恢复数据。 - **密码保护**:用户可以设置密码来...

Global site tag (gtag.js) - Google Analytics