`
keepwork
  • 浏览: 332398 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
开发者博客:http://www.developsearch.com

/**
 * 解压缩帮助类
 * 
 * @author chenxin
 * @version [版本号, 2012-5-21]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class UnzipUtil {

	/**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(UnzipContentHelper.class);
    
    /**
     * 
     * 解开压缩
     * 
     * @param contentNo contentno
     * @param sourcePath 原epub书籍路劲
     * @param targetPath 目标epub书籍路劲 只到保存跟路径
     * @see [类、类#方法、类#成员]
     */
    public void unZip(String contentNo, String sourcePath, String targetPath)
        throws Exception
    {
        
        // 查看资源是否存在
        File resourceFile = new File(sourcePath);
        // 如果资源不存在 就抛出异常
        if (!resourceFile.exists())
        {
            
            throw new Exception("资源 " + resourceFile.getPath() + " 不存在");
            
        }
        
        File targetFileDir = new File(targetPath);
        // 保存目录是否存在
        if (!targetFileDir.exists())
        {
            if (logger.isDebugEnabled())
                logger.debug("!targetFileDir.exists()=" + targetFileDir.getPath());
            
            targetFileDir.mkdir();
        }
        
        // 创建临时目录
        File targetFileDirEpub = new File(targetPath + "/" + contentNo + "_temp");
        if (!targetFileDirEpub.exists())
        {
            if (logger.isDebugEnabled())
                logger.debug(targetFileDirEpub.getPath());
            targetFileDirEpub.mkdir();
        }
        
        // 组装shell脚本
        File file = File.createTempFile("unZip", ".sh");
        write(file, contentNo, sourcePath, targetPath);
        
        // 复制文件
        int retVal = shell("sh " + file.getPath());
        
        // 如果不等于0 表示执行失败
        if (logger.isDebugEnabled())
            logger.debug("retVal=" + retVal);
        if (retVal != 0)
        {
            throw new Exception("脚本执行出错");
        }
        
    }
    
    private int shell(String cmd)
    {
        int retVal = 1;
        if (logger.isInfoEnabled())
            logger.info(cmd);
        try
        {
            Process process = java.lang.Runtime.getRuntime().exec(cmd);
            retVal = process.waitFor();
        }
        catch (Exception e)
        {
            
            e.printStackTrace();
        }
        
        return retVal;
    }
    
    private void write(File file, String contentNo, String sourcePath, String targetPath)
    {
        FileWriter fw = null;
        try
        {
            fw = new FileWriter(file);
            fw.write("cp " + sourcePath + " " + targetPath + "/" + contentNo + "_temp/");
            fw.write("\n");
            
            fw.write("cd " + targetPath + "/" + contentNo + "_temp");
            fw.write("\n");
            
            fw.write("unzip -o -q *.epub");
            fw.write("\n");
            
            fw.write("rm *.epub");
            fw.write("\n");
            
            fw.write("cd ..");
            fw.write("\n");
            
            fw.write("rm -fR " + contentNo);
            fw.write("\n");
            
            fw.write("mv  " + contentNo + "_temp  " + contentNo);
            fw.write("\n");
        }
        catch (IOException e)
        {
            
            e.printStackTrace();
        }
        finally
        {
            
            try
            {
                if (fw != null)
                    fw.close();
            }
            catch (IOException e)
            {
                
                e.printStackTrace();
            }
        }
        
    }
    
    public static void main(String[] args)
    {
        // /data/lgftp/resource/2011/2/22/7a8a51bb-aaad-4f12-8bb1-3a18140fe9a1.epub
        UnzipContentHelper unzip = new UnzipContentHelper();
        try
        {
            unzip.unZip("123124",
                "/data/lgftp/resource/2011/2/22/7a8a51bb-aaad-4f12-8bb1-3a18140fe9a1.epub",
                "/data/lgftp/ebook");
        }
        catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


}
分享到:
评论

相关推荐

    util-linux-ng-2.17源码(含fdisk)

    util-linux-ng-2.17源码(含fdisk) Here is a list of all documented files with brief descriptions: util-linux-ng-2.17.2/disk-utils/blockdev.c [code] util-linux-ng-2.17.2/disk-utils/cramfs.h [code] ...

    util-linux-ng-util-linux-ng-2.17.2-12.24.el6_8.1.zip

    《util-linux-ng:Linux系统维护的核心工具》 util-linux-ng是一个在Linux系统中不可或缺的工具集,它包含了众多用于系统管理、磁盘处理和文件系统检查的重要程序。这个压缩包"util-linux-ng-util-linux-ng-2.17.2-...

    backport-util-concurrent.jar

    backport-util-concurrent.jarbackport-util-concurrent.jarbackport-util-concurrent.jar

    Linux 中util-linux 工具包的源码

    在Linux操作系统中,`util-linux`工具包是一个不可或缺的部分,它包含了大量用于系统管理、文件操作和用户交互的命令行工具。源码分析对于开发者和系统管理员来说具有很高的价值,因为它允许他们理解这些命令的工作...

    backport-util-concurrent(2.2 /3.1)

    《backport-util-concurrent:Java并发编程的利器》 在Java的世界里,高效并发处理是提升应用程序性能的关键因素之一。backport-util-concurrent库,正如其名,是一种将Java 5及以上版本的并发特性“回移植”到Java...

    util-linux源码

    《util-linux源码详解》 在Linux操作系统中,util-linux是一个极为重要的软件包,它包含了大量用于系统管理和维护的实用工具。此包以其丰富的功能和广泛的适用性,成为了Linux开发者和系统管理员不可或缺的工具集。...

    apr-util-1.5.4.tar.gz

    标题中的"apr-util-1.5.4.tar.gz"是一个开源软件库的归档文件,它属于Apache Portable Runtime (APR)项目的一部分。APR是一个为各种操作系统提供统一API的库,主要用于处理底层系统功能,如文件I/O、网络通信、进程...

    util-linux-ng-2.14.1-bin和dep.zip

    《util-linux-ng-2.14.1-bin与dep.zip:Git Flow的必备组件解析》 在软件开发领域,高效协作和版本控制是至关重要的。Git Flow作为一种分支管理策略,为团队提供了规范化的开发流程。在实现Git Flow的过程中,有时...

    asm-util.jar

    asm-util-1.3.4.jar, asm-util-1.3.5.jar, asm-util-1.4.1.jar, asm-util-1.4.3.jar, asm-util-1.5.1.jar, asm-util-1.5.2.jar, asm-util-1.5.3.jar, asm-util-2.0.jar, asm-util-2.1.jar, asm-util-2.2.1-sources....

    jetty-util-6.1.26-API文档-中英对照版.zip

    赠送jar包:jetty-util-6.1.26.jar; 赠送原API文档:jetty-util-6.1.26-javadoc.jar; 赠送源代码:jetty-util-6.1.26-sources.jar; 赠送Maven依赖信息文件:jetty-util-6.1.26.pom; 包含翻译后的API文档:jetty-...

    opentracing-util-0.33.0-API文档-中文版.zip

    赠送jar包:opentracing-util-0.33.0.jar 赠送原API文档:opentracing-util-0.33.0-javadoc.jar 赠送源代码:opentracing-util-0.33.0-sources.jar 包含翻译后的API文档:opentracing-util-0.33.0-javadoc-API...

    ws-commons-util-1.0.2.zip_ws-comm-util.jar

    【标题】"ws-commons-util-1.0.2.zip_ws-comm-util.jar" 提供的是一个名为 ws-commons-util 的库的版本1.0.2,这个库经过压缩打包成ZIP格式,其中包含了 ws-comm-util.jar 文件。这个JAR文件是Java应用程序中常见的...

    util-linux-2.24.tar.gz

    《util-linux-2.24:Linux系统工具的基石》 在Linux世界中,util-linux是一个不可或缺的软件包,它包含了大量用于系统管理和维护的基本工具。这个名为"util-linux-2.24.tar.gz"的压缩包就是util-linux项目的2.24...

    ws-commons-util-1.0.2.jar

    ws-commons-util-1.0.2.jar 相关jar包

    util-linux-2.24.1.tar.xz

    《util-linux-2.24.1:OpenWrt SDK构建关键组件解析》 在Linux系统开发和定制领域,OpenWrt是一个广受欢迎的开源项目,它为各种嵌入式设备提供了高度可定制的固件。当我们谈论"util-linux-2.24.1.tar.xz"时,我们...

    asm-util-3.2.jar

    asm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util...

    CentOS util-linux 二进制包

    包含util-linux涵盖的所有命令。 注意:仅支持X86_64架构、CentOS and RedHat 7.x (8.x系列未实验)。 MD5: 4E1AD83580CAFED285B418F3097EB7D0 SHA1: 196DE23F1C614FD5CBAF514E111F885AA0F2265D CRC32: 368AACEB

    apr-util-1.6.1.tar.gz

    apr-util-1.6.1.tar.gz下载。。

    jetty-util-6.1.26-API文档-中文版.zip

    赠送jar包:jetty-util-6.1.26.jar; 赠送原API文档:jetty-util-6.1.26-javadoc.jar; 赠送源代码:jetty-util-6.1.26-sources.jar; 赠送Maven依赖信息文件:jetty-util-6.1.26.pom; 包含翻译后的API文档:jetty-...

    asm-util-6.0.jar

    asm-util-6.0.jar 编写工具测试类中用到,配合asm-6.0.jar使用

Global site tag (gtag.js) - Google Analytics