`

如何把多个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文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

    java zip加密压缩

    JAR(Java Archive)是Java的归档文件格式,用于收集多个类文件和其他资源。在这里,JAR包可能包含了实现CSV加密和ZIP压缩功能的类和方法。 7. **实现流程**: - 生成AES密钥。 - 使用AES密钥对CSV文件进行加密,...

    beijing-CSV格式天气数据.zip

    标题中的"beijing-CSV格式天气数据.zip"表明这是一个压缩文件,其中包含了关于北京的天气数据,而数据是以CSV(Comma-Separated Values)格式存储的。CSV是一种常见的数据交换格式,它允许用户用逗号分隔的方式来...

    CSV大数据分批并压缩导出

    在Java中,可以使用java.util.zip包中的类(如GZIPOutputStream)来对CSV文件进行实时压缩。压缩可以显著减小文件大小,但同时也会带来一定的计算开销。因此,在选择压缩算法时,需要权衡压缩效率和解压速度。 在...

    csv.zip_csv_parentut4_zip

    8. **ZIP压缩**:ZIP格式允许将多个文件打包在一起,减小存储空间。在处理大量CSV文件时,可以使用ZIP压缩,便于管理和传输。 9. **解压与提取**:使用ZIP工具(如7-Zip、WinRAR)或编程接口(如Python的`zipfile`...

    CSV文件拆分.zip

    "CSV大文件拆分程序"是一个专门针对大型CSV文件的工具,其主要功能是将大的CSV文件拆分为多个较小的文件,以便于管理、处理或上传到支持小文件尺寸的系统。这个压缩包包含两个文件:"csv大文件分割器1212.exe"和...

    matlab提取csv内容.zip

    这个压缩包包含一个CSV数据文件(ad_40k数据采集.csv)、一个MATLAB脚本(addata_csvread.m)以及一个说明文件(readme.txt)。 首先,我们要了解`csvread`函数。它是MATLAB中用于从CSV文件中读取数据的主要工具。...

    (学习用)state_csv.zip

    "(学习用)state_csv.zip" 是一个用于学习目的的压缩文件,其中包含一个或多个与数据库相关的CSV(逗号分隔值)文件。CSV格式是一种通用的数据交换格式,常用于存储表格数据,如数据库导出、数据分析和报告。它以纯...

    cnn2自编码器_python读取csv文件_读取csv文件_自编码_自编码器_源码.zip

    标签为空,所以无法提供更多的主题信息,但根据标题和描述,我们可以推测这个压缩包可能包含了一个使用CNN结构的自编码器的Python实现,以及用于训练和测试的CSV数据文件。文件名称列表中的“cnn2自编码器_python...

    对python读取zip压缩文件里面的csv数据实例详解

    在Python编程中,有时我们需要处理压缩文件,特别是像ZIP这样的格式,其中可能包含多个数据文件,如CSV。CSV(逗号分隔值)文件是一种常见的数据存储格式,用于存储表格数据,如数据库或电子表格。Python提供了强大...

    14727758_202405291911557049.csv.zip

    ZIP是一种常见的文件压缩格式,它允许用户将多个文件或文件夹打包成一个单一的ZIP文件,以便于存储、传输或分发。这种格式广泛应用于电子邮件附件、软件下载和数据备份等领域。 描述中同样提到的“14727758_...

    Moneydance插件从CSV文件导入交易.zip

    1. **CSV文件准备**:首先,你需要确保你的CSV文件格式正确。这包括列标题(例如“日期”,“描述”,“金额”,“类别”等)以及正确的数据格式。Moneydance可能有特定的列名和顺序要求,所以你需要根据其导入指南...

    jupyter 导入csv文件方式

    而在实际操作过程中,经常需要处理各种格式的数据文件,其中CSV(Comma-Separated Values)文件是最常见的一种数据存储格式之一。本文将详细介绍如何在Jupyter Notebook环境中导入CSV文件,并解决一些常见的问题。 ...

    99csv4.0.0.0.zip

    7. **批量处理**:可能支持批量处理多个CSV文件,节省用户时间。 8. **安全备份**:可能有数据备份和恢复选项,确保数据安全。 9. **兼容性**:由于是4.0版本,可能对旧版本的CSV文件有良好的兼容性。 10. **用户...

    freemaker导出多个word格式doc压缩文件.rar

    本教程将详细讲解如何使用FreeMarker来生成单个及多个Word文档,并将其压缩成一个RAR文件。 首先,我们需要理解FreeMarker的基本原理。FreeMarker是一个基于模板的语言,它与编程语言不同,不执行业务逻辑,而是...

    jena_climate_2009_2016.csv.zip

    这个压缩包包含一个名为“jena_climate_2009_2016.csv”的文件,记录了长达七年的时间序列数据,涵盖了多种气象参数。 首先,我们来了解一下这个数据集的基本结构。"jena_climate_2009_2016.csv"文件通常会包含一列...

    java调用perl脚本并压缩zip

    这个教程就是关于如何使用Java调用Perl脚本来生成Excel文件,然后将生成的文件压缩为ZIP格式,同时解决可能出现的乱码问题。这里我们将深入探讨这两个关键步骤。 首先,让我们来看看Java调用Perl脚本的部分。在Java...

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

    在Laravel框架中创建ZIP压缩文件并提供下载功能是Web开发中常见的需求之一,尤其是在需要为用户提供多个文件下载服务时,通过压缩文件可以简化这一过程,提高用户体验。本文主要讲解了在Laravel环境下,如何利用PHP...

    读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码(还是以支付宝对账单为例)

    ZIP是一种广泛使用的文件存档格式,它允许将多个文件和目录打包成一个单一的压缩文件,以节省存储空间和提高传输效率。ZIP文件内部包含了文件的原始数据以及元数据,如文件名、日期时间戳等。 在Java或Python等编程...

Global site tag (gtag.js) - Google Analytics