【问题标题】:adding csv file to a zip file on the fly for export and import即时将 csv 文件添加到 zip 文件以进行导出和导入
【发布时间】:2023-09-30 04:03:01
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: java android csv zipfile opencsv


    【解决方案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 文件并为其设置密码。如果您能提出建议,它将帮助我实现导出和导入