java - 在 java 中创建 Zip 文件而不使用 byte[]

标签 java zip

在我的程序中,我生成了多个 CSV 文件,我想将它们作为一个 .zip 文件发布在网页上。为此,我想在服务器上使用 Java 1.6。

目前,我可以毫无问题地创建 .csv 文件。现在我想写入 BufferedWriter 的内容,我用它来创建 csv 文件,直接写入 Zip 文件(不存储 csv 文件)。

我找到了一些教程,例如 Creating zip archive in Javahttp://www.mkyong.com/java/how-to-compress-files-in-zip-format/我想在我的应用程序中做或多或少相同的事情,但我不喜欢字节数组。

我可以避免这种字节数组吗?

最佳答案

您可以使用 Java 中的新 IO 包来处理 Zip 文件。

Zip File System Provider从 Java 7 开始提供。

Map<String, String> env = new HashMap<>(); 
env.put("create", "true");
// locate file system by using the syntax 
// defined in java.net.JarURLConnection
URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip");
try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {
    Path externalTxtFile = Paths.get("/codeSamples/zipfs/SomeTextFile.txt");
    Path pathInZipfile = zipfs.getPath("/SomeTextFile.txt");          
    // copy a file into the zip file
    Files.copy( externalTxtFile,pathInZipfile, 
                StandardCopyOption.REPLACE_EXISTING ); 
}

关于java - 在 java 中创建 Zip 文件而不使用 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360624/

相关文章:

php - ZipArchive 文件无效

spring-boot - 如何将庞大的结果集从数据库导出到多个 csv 文件中并动态压缩它们?

java - 替换 ZipOutputStream 中的文件

java - 我的 while 循环中的此开关遇到问题

java - Hibernate 选择查询

java - java 计算 vector 出现次数

java - 如何在不收集或检查一个流的所有元素是否存在于另一流中的情况下比较两个 Int Streams?

java - 混合表达式和表达式语言(<%= %> 在 c :if) 内部

c# - 如何在 C# 中将字符串数据作为 ZIP 存档上传到 FTP 服务器

sql-server - ZIP 文件在 SSIS 中不起作用(服务器级别问题?)