`

如何把多个CSV文件压缩zip格式输出

阅读更多

    1. 处理CSV文件很简单,因为我们强大的Offic 就可直接打开CSV格式

public class ZipServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      // Test data
         List<Object> listObject1 = new ArrayList<Object>();
         List<Object> listObject2 = new ArrayList<Object>();
         List<Object> listObject3 = new ArrayList<Object>();
            
         listObject1.add("a");
         listObject2.add("b");
         listObject3.add("c");
            
         List<List<Object>> objects = new ArrayList<List<Object>>();
         objects.add(listObject1);
         objects.add(listObject2);
         objects.add(listObject3);

      String projectLocalPath = "D:/tomcat6.18/webapp/ROOT/pictures/zip_files/";
        String exportedFileName = "name1";
        fileInputStream(objects,projectLocalPath, response, exportedFileName);
        fileOutputStream(response, projectLocalPath, exportedFileName);  
        delAllFiles(projectLocalPath);
   }

private static void fileInputStream(List<List<Object>> csvList,String projectLocalPath, HttpServletResponse response, String exportedFileName) {
		setCSVContentType(response, exportedFileName);
		List<Object[]> listObj = new ArrayList<Object[]>();
		int size = csvList.size();
		for (int i = 0; i < size; i++) {
			List<Object> listObject = csvList.get(i);
			for(int j = 0; j < listObject.size(); j ++) {
				Object[] objects = new Object[size];
				objects[i] = listObject.get(j);
				listObj.add(objects);
			}
		}
		
		try {
			for (int i = 0; i <listObj.size(); i++) {
				File tempFile = new File(projectLocalPath+"/out"+i+".csv");
				CSVWriter writer = new CSVWriter(new FileWriter(tempFile));
				Object[] obj = listObj.get(i);
				for(int j = 0; j < obj.length; j++) {
					if(null != obj[j]) {
						String value = String.valueOf(obj[i]);
						String values[] = new String[1];
						values[0] = value;
						writer.writeNext(values);
					}
				}
				writer.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

	private static void fileOutputStream(HttpServletResponse response,
			String projectLocalPath, String exportedFileName) throws IOException {
		setZIPContentType(response, exportedFileName);
		File file = new File(projectLocalPath);
		File[] listFiles = file.listFiles();
		ZipOutputStream out = null;
		try {  
			out = new ZipOutputStream(response.getOutputStream());
			for (int i = 0; i < listFiles.length; i++) {
				file = listFiles[i];
				writeZipOutputStream(file, out, "");  
			}
		} catch (Exception e) {  
			e.printStackTrace();
	    }finally{
	    	out.close();
	    }
	}

@SuppressWarnings("unused")
	private synchronized static void writeZipOutputStream(File inputFile, ZipOutputStream out,String base) throws IOException {
		if (inputFile.isDirectory()) {
			File[] inputFiles = inputFile.listFiles();
			out.putNextEntry(new ZipEntry(base + "/"));
			base = base.length() == 0 ? "" : base + "/";
			for (int i = 0; i < inputFiles.length; i++) {
				writeZipOutputStream(inputFiles[i], out, base + inputFiles[i].getName());
			}
		} else {
			if (base.length() > 0) {
				out.putNextEntry(new ZipEntry(base));
			} else {
				out.putNextEntry(new ZipEntry(inputFile.getName()));
			}
			FileInputStream in = new FileInputStream(inputFile);
			try {
				int c;
				byte[] by = new byte[1024];
				while ((c = in.read(by)) != -1) {
					out.write(by, 0, c);
				}
			} catch (IOException e) {
				throw e;
			} finally {
				in.close();
			}
		}
	}
public static boolean delAllFiles(String path) {
	   boolean flag = false;
       File file = new File(path);
       if (!file.exists()) {
         return flag;
       }
       if (!file.isDirectory()) {
         return flag;
       }
	   String[] tempList = file.list();
	   File temp = null;
       for (int i = 0; i < tempList.length; i++) {
          if (path.endsWith(File.separator)) {
             temp = new File(path + tempList[i]);
          } else {
              temp = new File(path + File.separator + tempList[i]);
          }
          if (temp.isFile()) {
             temp.delete();
          }
          if (temp.isDirectory()) {
             delAllFiles(path + "/" + tempList[i]); 
             flag = true;
          }
       }
       return flag;
	}
分享到:
评论

相关推荐

    CSV文件生成及Z压缩成zip下载

    分步生成csv,获取数据第一行生成文件标题,同时生成第一行数据,返回标题名称。 将多csv文件压缩成zip,之后删除原csv文件

    java导出csv文件并压缩(含下载提示功能)

    1.将数据导成.csv格式,并压缩成.zip格式后,显示下载提示(含保存文件路径) 2.前后台代码都有哦

    java zip加密压缩

    csv文件加密后压缩成ZIP文件,当然,也可以使其他文件加密压缩。 加密压缩方法以及JAR包见附件

    jupyter 导入csv文件方式

    主要介绍了jupyter 导入csv文件方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Laravel 中创建 Zip 压缩文件并提供下载的实现方法

    主要介绍了Laravel 中创建 Zip 压缩文件并提供下载,本文通过两个任务,实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    文件搜索工具 FileLocator Pro 8.5 Build 2912 + x64.zip

    支持直接对ZIP压缩包,DOC文档格式和PDF电子文档格式进行搜索,支持脚本技术,搜索结果可以直接导出为Text, CSV, 或者 XML文档格式,内置一个简单的文件浏览器,支持鼠标拖放功能和打印预览功能,非常容易使用! ...

    java导出100万以上excel大数据样例

    java导出excel大数据,由于excel本身sheet页存储条数的限制,方案一般有:1、导出多个excel,然后将多个excel压缩为zip包,导出;2、导出可以通过excel打开的文本文件;3、导出csv文件(简单格式的)。 本样例以导出...

    光学识别 OCR 软件 Readiris Corporate 17.2.9.0 中文多语直装版.zip

    Readiris 14 包括高级的 PDF 创建工具,能让您合拼多个文件到单一的 PDF 或选择不同的输出格式(PDF 影像、PDF 影像 – 文字,PDF 文字或 PDF 文字 – 影像)。 12、缩减您的图档和 PDF 档的大小 基于 I.R.I.S. 的...

    盛世桃源通用文件管理系统 v2.5 for .net 2.0/3.0/3.5.zip

    10.文件转发功能,可将多个文件下载地址通过邮件或短信发送给他人下载,并可设置下载次数及天数。 11.在线编辑文本文件、播放任何影音文件、查看图片内容、对共享文件及目录添加文字注释功能。 12.在线编辑Word,...

    07超级画板程序.zip

    “07超级画板程序.zip”是一个Python自动化办公的压缩文件包,它包含了一系列用于提高工作效率和简化日常任务的Python脚本和工具。这个程序包的主要目的是帮助用户通过自动化的方式完成各种办公任务,从而节省时间和...

    C#200个基础工具类大全.zip

    CSV文件转换;DataTable转实体;Excel操作类;FTP操作类;Html操作类;IP辅助类;JSON操作;JS操作;URL的操作类;XML操作类;处理多媒体的公共类;弹出消息类;二维码操作类;汉字转拼音;加密解密;科学计数,数学;类型转换;配置...

    大作业基于Django和Ajax实现的分布式计算应用源码.zip

    后者按钮则是下载用户选定的任务所生成的csv文件,单个任务被选择即单文件csv,多任务被选择自动压缩为压缩包后下载 其余的页面基本上都是查看,不再过多说明, 需要知道作为服务端的电脑()在局域网中所分配的IP,...

    Wireshark-win64-2.6.11.zip

    读/写许多不同的捕获文件格式:TCPdump(Libpcapc)、PCAP NG、Catapult DCT 2000、Cisco安全IDS iplog、Microsoft网络监视器、网络通用嗅探器(压缩和未压缩)、Sniffer Pro和NetXray、网络仪器观察者、NetScreen ...

    天音淘宝店铺宝贝批量下载复制大师 v3.06.zip

    15.支持最小化到托盘,可同时运行多个程序。 16.支持下载完成后自动关机、重启、待机或注销等功能。 17.智能数据文件管理功能,大于10M时程序先压缩,压缩还大于10M时提示用户删除。 18.支持淘宝地址智能记忆、...

    data_for_tableau

    data_for_tableau csv_files_download.ipynb:从Citi Bike网页自动下载zip文件并解压缩所有文件。 Getting_ny_station_info.ipynb:从Citi Bike API服务器获取所有Citi Bike站信息。 creation_csv.ipynb:在2019年从...

    rsamatlab代码-fmri-extract-HCP-mask:该脚本使您可以轻松地从HCP-MMP1.0拆分中提取特定的二进制掩码文件

    解压缩HCP_atlas.zip。 检查地图集文件(.nii)和mmp.csv文件是否都在同一文件夹中。 如何使用 这是一个简单的脚本,用于获取人类Connectome项目MMP1.0碎片(此处包含)的体积图,提取所需的ROI,并将其保存为二进制...

    programming-assignment-1

    解压缩zip文件后,请勿对“ specdata”目录中的文件进行任何修改。 在每个文件中,您都会注意到很多天都缺少硫酸盐或硝酸盐(或两者)(编码为NA)。 这在美国的空气污染监测数据中很常见。 ## Part 1名为'...

    rocketjob:Ruby 缺少的后台和批处理系统

    文件格式CSV、PSV、JSON、固定格式、xlsx。 显着的错误处理改进,特别是在过去导致“挂起”作业的节流故障方面。 除了 MongoDB 作为数据存储之外,还支持 AWS DocumentDB。 删除了符号的使用,以满足 MongoDB 和...

Global site tag (gtag.js) - Google Analytics