package com.spider.reader.business.action; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.spider.reader.business.service.ArticleService; import com.spider.reader.business.service.PeriodService; import com.spider.reader.common.action.BaseAction; import com.spider.reader.common.bean.Article; import com.spider.reader.common.bean.Period; import com.spider.reader.common.tool.GetFileSize; import com.spider.reader.common.tool.ZipUtil; import com.spider.reader.common.util.Contants; import com.spider.reader.common.util.HttpDownload; import com.spider.reader.common.util.StringUtils; /** * @ClassName: DataExportAction * @Description: 电信、移动数据导出 * @author zhough * @date 2012-12-17 下午05:38:32 */ public class DataExportAction extends BaseAction { private static final long serialVersionUID = 1L; protected final static Log log = LogFactory.getLog(DataExportAction.class); private String qproductid; private PeriodService periodService; private ArticleService articleService; /***************************** 电信数据导出 ************************************/ public String teleDataExport() { log.error("teleDataExport start……"); String jouralId = StringUtils.nvl(this.getRequest().getParameter("jouralId")); String issueId = StringUtils.nvl(this.getRequest().getParameter("issueId")); qproductid = StringUtils.nvl(jouralId); Period periodVo = periodService.queryPeriodById(StringUtils.nvl(issueId), Period.class);//通过id查询刊期 if(null == periodVo){ getRequest().setAttribute("message", "没获取到刊期相关数据!"); return "error"; } FileOutputStream out_0 = null; try { String periodName = periodVo.getProductname(); periodName = periodName.replaceAll("<","").replaceAll(">","").replaceAll("\\|","").replaceAll("\\?","").replaceAll("\\*","").replaceAll("\\/","").replaceAll(":",""); /** 名称:电信--中外文化交流 **/ String mkdirPath = Contants.getProjectRealPath() + "/exportfile/d" + periodVo.getId() + "/电信--" + periodName; String fileTxt = mkdirPath + "/正文.txt"; StringBuilder contentTxt = new StringBuilder(); File zipFile = new File(mkdirPath + ".zip"); if(zipFile.exists()) { zipFile.delete(); } File filepath = new File(mkdirPath); if (!filepath.isDirectory()) { filepath.mkdirs(); } /** 查询刊期下的上架文章status = 1 **/ List<Article> articleList = articleService.queryArticleList(StringUtils.nvl(issueId),"1"); log.error("teleDataExport articleList ==" + articleList.size()); if(null == articleList || articleList.size() == 0){ getRequest().setAttribute("message", "没获取到刊期文章相关数据!"); return "error"; } /** 存储所有图片 * */ List<String[]> picList = new ArrayList<String[]>(); String strTemp = ""; if (null != articleList && articleList.size() > 0) { for (int i = 0; i < articleList.size(); i++) { Article articleVo = (Article) articleList.get(i); String contentId = StringUtils.nvl(articleVo.getId()); // 当前文章ID String contentName = StringUtils.nvl(articleVo.getName()); // 当前文章标题 String[] contentPic = StringUtils.getPicture(articleVo.getLargepicture(), "480"); // 480抬头大图 picList.add(contentPic); // 抬头大图存入List中 String columnName = StringUtils.nvl(articleVo.getColumnname()); // 栏目名称 String articleContent = StringUtils.nvl(articleVo.getContent()); // 当前文章正文 /****************************** 拼揍正文 ******************************/ if(!strTemp.contains(columnName)){ strTemp += columnName+"|"; contentTxt.append("##"+columnName+"\n\n"); } contentTxt.append("###"+contentName+"\n\n"); contentTxt.append(" "+StringUtils.getVivaContent(articleContent)); contentTxt.append("\n\n\n\n"); /****************************** 组装图片copy到对应目录 ******************************/ String[] picAs = (String[]) picList.get(i); String path=Contants.getUploadImgPath(); //取得服务器上的图片 if(path.equals("/")){ path=Contants.getProjectRealPath(); } if (StringUtils.isNotEmpty(picAs[0]) && StringUtils.isNotEmpty(picAs[1]) && !picAs[1].contains(Contants.DEFAULTPIC)) { File fileTmp = new File(path + "/pic/bookpic/" + picAs[1]); log.error("teleDataExport fileTmp =="+fileTmp); if (fileTmp.exists()) { ZipUtil.copyStreamTwo(path + "/pic/bookpic/" + picAs[1], mkdirPath + "/" + columnName + "-" + contentName + ".jpg"); } } } /********************* 生成txt文档 **********************/ out_0 = new FileOutputStream(fileTxt); out_0.write(contentTxt.toString().getBytes()); /***************** 生成zip文档 ******************/ mkdirPath = Contants.getProjectRealPath() + "/exportfile/d" + periodVo.getId(); ZipUtil.zip(mkdirPath, mkdirPath + ".zip"); GetFileSize.delFolder(mkdirPath); String zipPath = mkdirPath + ".zip"; new HttpDownload().httpDownLoadUtil(this.getRequest(), this.getResponse(), zipPath); } } catch (Exception e) { e.printStackTrace(); getRequest().setAttribute("message", "电信数据导出失败!"); return "error"; }finally{ try { if(null != out_0){ out_0.close(); } } catch (IOException e) { e.printStackTrace(); } } getRequest().setAttribute("message", "电信数据导出成功"); return SUCCESS; } /***************************** 移动数据导出 ************************************/ public String moveDataExport(){ log.error("moveDataExport start……"); String jouralId = StringUtils.nvl(this.getRequest().getParameter("jouralId")); String issueId = StringUtils.nvl(this.getRequest().getParameter("issueId")); qproductid = StringUtils.nvl(jouralId); Period periodVo = periodService.queryPeriodById(StringUtils.nvl(issueId), Period.class);//通过id查询刊期 if(null == periodVo){ getRequest().setAttribute("message", "没获取到刊期相关数据!"); return "error"; } /** 查询刊期下的上架文章status = 1 **/ List<Article> articleList = articleService.queryArticleList(StringUtils.nvl(issueId),"1"); log.error("moveDataExport articleList=="+articleList.size()); if(null == articleList || articleList.size() == 0){ getRequest().setAttribute("message", "没获取到刊期文章相关数据!"); return "error"; } FileOutputStream out_0 = null; try { String periodName = periodVo.getProductname(); periodName = periodName.replaceAll("<","").replaceAll(">","").replaceAll("\\|","").replaceAll("\\?","").replaceAll("\\*","").replaceAll("\\/","").replaceAll(":",""); /** 名称:移动--中外文化交流2012年第12期 **/ String mkdirPath = Contants.getProjectRealPath() + "/exportfile/y" + periodVo.getId() + "/移动--" + periodName + periodVo.getPeriodname(); log.error("moveDataExport mkdirPath=="+mkdirPath); /** 存储所有图片 * */ List<String[]> picList = new ArrayList<String[]>(); String fileTxt = ""; File zipFile = new File(mkdirPath + ".zip"); log.error("moveDataExport zipFile=="+zipFile); if(zipFile.exists()) { zipFile.delete(); } File filepath = new File(mkdirPath); if (!filepath.isDirectory()){ filepath.mkdirs(); } if(null != articleList && articleList.size()>0){ for(int i = 0; i < articleList.size(); i++){ Article articleVo = (Article) articleList.get(i); String contentId = StringUtils.nvl(articleVo.getId()); // 当前文章ID String contentName = StringUtils.nvl(articleVo.getName()); // 当前文章标题 String[] contentPic = StringUtils.getPicture(articleVo.getLargepicture(), "480"); // 480抬头大图 picList.add(contentPic); // 抬头大图存入List中 String articleContent = StringUtils.nvl(articleVo.getContent()); // 当前文章正文 /****************************** 拼揍正文 ******************************/ StringBuilder contentTxt = new StringBuilder(); contentTxt.append(contentName+"\n\n"); contentTxt.append(" "+StringUtils.getVivaContent(articleContent)); contentTxt.append("\n"); // contentTxt.append(" 本文出自:《" + periodName + "》" + periodVo.getPeriodname()); /****************************** 组装图片copy到对应目录 ******************************/ String[] picAs = (String[]) picList.get(i); String path=Contants.getUploadImgPath(); //取得服务器上的图片 if(path.equals("/")){ path=Contants.getProjectRealPath(); } if (StringUtils.isNotEmpty(picAs[0]) && StringUtils.isNotEmpty(picAs[1]) && !picAs[1].contains(Contants.DEFAULTPIC)) { File fileTmp = new File(path + "/pic/bookpic/" + picAs[1]); log.error("moveDataExport fileTmp=="+fileTmp); if (fileTmp.exists()) { ZipUtil.copyStreamTwo(path + "/pic/bookpic/" + picAs[1], mkdirPath + "/" + String.valueOf(i+1) + contentName + ".jpg"); } } fileTxt = mkdirPath + "/" + String.valueOf(i+1) + contentName + ".txt"; log.error("moveDataExport fileTxt=="+fileTxt); /********************* 生成txt文档 **********************/ out_0 = new FileOutputStream(fileTxt); out_0.write(contentTxt.toString().getBytes()); } /***************** 生成zip文档 ******************/ mkdirPath = Contants.getProjectRealPath() + "/exportfile/y" + periodVo.getId(); ZipUtil.zip(mkdirPath, mkdirPath + ".zip"); GetFileSize.delFolder(mkdirPath); String zipPath = mkdirPath + ".zip"; new HttpDownload().httpDownLoadUtil(this.getRequest(), this.getResponse(), zipPath); } } catch (Exception e) { e.printStackTrace(); getRequest().setAttribute("message", "移动数据导出失败!"); return "error"; }finally{ try { if(null != out_0){ out_0.close(); } } catch (IOException e) { e.printStackTrace(); } } getRequest().setAttribute("message", "移动数据导出成功"); return SUCCESS; } public String getQproductid() { return qproductid; } public void setQproductid(String qproductid) { this.qproductid = qproductid; } public void setPeriodService(PeriodService periodService) { this.periodService = periodService; } public void setArticleService(ArticleService articleService) { this.articleService = articleService; } }
相关推荐
本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor.java`这个类,它是实现文件和文件夹压缩的核心工具。 首先,让我们了解`java.util.zip...
这段代码不仅是对Node.js文件系统模块fs功能的展示,也是对异步操作、递归和文件排序算法等计算机基础知识的应用。通过这个实例,我们可以了解到如何利用Node.js对文件系统进行高效地遍历和处理,并且理解到了文件...
综上所述,使用VBScript进行文件夹压缩,实际上是通过修改文件夹的系统属性来实现压缩效果,而不是创建一个压缩文件包。这种技术在某些需要批量压缩文件的管理任务中非常有用,但需要注意权限和兼容性问题,并且要...
- 针对WinRAR的使用,可以通过实例演示和学生自主尝试来逐步掌握。 9. **教学评价**: - 评价不仅限于技能掌握,还包括学生的参与度、问题解决能力和团队合作精神。 通过以上讲解,学生不仅可以了解云网盘的基本...
从压缩包子文件的文件名称“windows-folder-remark-master”来看,这可能是项目的源代码仓库,可能包含了程序的主要代码文件和相关资源。"master"通常代表Git仓库的主分支,暗示这是一个开源项目,用户不仅可以下载...
用户需要找到下载的压缩文件,例如"fedora14(set well)",然后通过鼠标右键菜单选择“解压文件”。在弹出的选项中,指定解压的目标位置,这里推荐选择D盘根目录,这样便于管理和访问解压后的文件。解压完成后,D盘根...
它允许用户选择要处理的js文件或者代码块,无论是单独的文件还是整个文件夹,都可以进行压缩和混淆处理。 标签“js javascript 压缩 混淆”进一步明确了工具的功能,其中“js”和“javascript”是同义词,指代...
以下将详细介绍使用ZipArchive类实现两个实例:一个是生成ZIP压缩文件,另一个是压缩文件夹下所有文件。 首先,我们需要了解如何使用ZipArchive类来生成一个ZIP压缩文件。创建一个ZIP文件的基本步骤包括:创建一个...
在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用和.NET框架相关项目时。本主题聚焦于"C# 压缩",这是一个关键的文件处理技术,允许程序将一组文件或目录打包成更小的体积,以便于存储、传输或...
本文主要介绍了C#实现文件压缩与解压的方法,结合具体实例形式分析了C#针对文件进行zip格式压缩与解压缩的相关操作技巧。 文件压缩 文件压缩是将文件或文件夹压缩成一个小的文件,以便于存储或传输。在C#中,可以...
【标题】"新建 360压缩 ZIP 文件.zip_STC_canalq3i_ranxen" 提供了几个关键信息点,首先这是一个使用360压缩软件创建的ZIP格式的压缩文件。ZIP是一种常见的文件归档和压缩格式,允许我们将多个文件或文件夹打包成一...
3. “web”同样可能是一个文件夹或文件,可能与Web应用程序开发相关,展示了如何在ASP.NET 3.5环境中使用LINQ来处理Web应用中的数据。 综上所述,这个压缩包内容很可能是为了帮助开发者理解如何在.NET 3.5框架下,...
- 选择“批量处理”选项,导入需要压缩的图片文件或整个文件夹。 - 设置压缩参数,如目标尺寸、质量级别、输出格式等。 - 确认设置无误后,点击“开始”执行批量压缩任务。 - 完成后,压缩后的图片会保存在指定...
1. **压缩格式**: .rar 是一种流行的压缩文件格式,由WinRAR软件创建。它允许用户将多个文件和文件夹打包成一个更小的文件,便于存储和传输。 2. **数据压缩**: 压缩技术的核心是减少文件大小,通过算法去除冗余...
这个压缩包文件包含了关于小程序开发和Android应用开发的相关内容,重点是使用了afinal开源框架的实例源码。Afinal是一个轻量级的Android开发框架,旨在简化Android中的数据库操作和网络请求,提供了一种简洁的API...
6. 使用WinRAR等压缩工具,将文件压缩后勾选“压缩后删除源文件”,完成后再删除压缩包。 7. 结束Explorer进程,启动新的Explorer.exe实例,然后尝试删除。这可以通过任务管理器实现。 对于“非空文件夹”或“坏...
综上所述,通过对提供的文件信息进行分析,我们了解到了关于西门子PLC200、300、400系列的应用程序设计实例精讲的相关内容以及如何使用2345好压进行分卷压缩和解压的操作方法。这对于想要深入了解PLC编程以及文件...
这个源码实例为开发者提供了一个学习和实践ASP.NET Web应用程序开发,特别是针对文件操作和管理功能的理想平台。在ASP.NET中,我们通常使用C#或VB.NET作为后端编程语言,而ASPX则是用于创建动态网页的服务器端脚本。...
【标题】"log4net控件应用入门实例源码_51aspx"指的是一个针对ASP.NET开发者的教程,该教程通过源代码实例介绍了如何在项目中使用log4net这一强大的日志记录工具。log4net是Apache软件基金会的一个开源项目,它为...