即时将 csv 文件添加到 zip 文件以进行导出和导入

Posted

技术标签:

【中文标题】即时将 csv 文件添加到 zip 文件以进行导出和导入【英文标题】:adding csv file to a zip file on the fly for export and import 【发布时间】:2016-03-21 13:51:39 【问题描述】:

我正在让我的应用程序将数据库表/行导出为 CSV 文件。 但目前我需要对实现进行一些调整。

    我正在使用 opencsv 库(CSV 写入器/读取器)来导出和导入 csv 文件。

    创建 csv 文件后,我需要再次以编程方式对其进行压缩并创建要导出的 .zip 文件

    之后,我需要为 zip 文件创建密码。

请帮助了解如何从 csv 文件内容即时创建 zip 文件。

另外,我如何为创建的 zip 文件设置密码。

请帮助我实现第 2 点和第 3 点。

【问题讨论】:

【参考方案1】:
public class Compress  
  private static final int BUFFER = 2048; 

  private String[] _files; 
  private String _zipFile; 

  public Compress(String[] files, String zipFile)  
    _files = files; 
    _zipFile = zipFile; 
   

  public void zip()  
    try   
      BufferedInputStream origin = null; 
      FileOutputStream dest = new FileOutputStream(_zipFile); 

      ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest)); 

      byte data[] = new byte[BUFFER]; 

      for(int i=0; i < _files.length; i++)  
        Log.v("Compress", "Adding: " + _files[i]); 
        FileInputStream fi = new FileInputStream(_files[i]); 
        origin = new BufferedInputStream(fi, BUFFER); 
        ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1)); 
        out.putNextEntry(entry); 
        int count; 
        while ((count = origin.read(data, 0, BUFFER)) != -1)  
          out.write(data, 0, count); 
         
        origin.close(); 
       

      out.close(); 
     catch(Exception e)  
      e.printStackTrace(); 
     

   


我没有在 android 中尝试过,但希望它可以在 android 中运行。 希望对您有所帮助。

【讨论】:

感谢您的回复。但这是为了使用 java.util.zip 类。我喜欢这种方法,因为我可以用作输入流。但主要问题仍然是密码保护。我需要创建 zip 文件并为其设置密码。如果您能提出建议,它将帮助我实现导出和导入

以上是关于即时将 csv 文件添加到 zip 文件以进行导出和导入的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Google BigQuery 导出到本地计算机中的 CSV 文件

无法即时生成 ZIP 文件并将其发送到用户的浏览器以供下载

淘宝下载的数据包都是ZIP格式的,怎么转换成CSV格式啊?

问题一:java怎样限制导出的csv文件大小,csv文件导出里面行数大于5000条则分为多个csv文件。

从管理产品网格将产品导出到 csv

win7如何使用zip命令压缩一个csv。