即时将 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 文件