【发布时间】:2015-02-14 08:40:44
【问题描述】:
我是 OSX 用户,目前正在使用 Play Framework,当我使用 java.util.zip 将一些文件压缩到文件夹中时,出现了一个奇怪的问题。这些文件将自动生成(完成)到/Users/vorsz/Desktop/MonthlyReport/August。但是当我尝试使用以下代码压缩它们时:
val baseURL: String = "/Users/vorsz/Desktop/MonthlyReport/"
val directoryToZip = new File(baseURL+"August").mkdir()
val writer = new PrintWriter(baseURL+"August/test.html", "UTF-8")
writer.println("<Table><tr><td>45296</td><td>2014-07-23</td><td>2014-08-01</td><td>010194</td><td></td><td>120</td><td>C-00322</td><td>ANK 007</td><td></td><td></td></tr></Table>")
writer.close()
val writer1 = new PrintWriter(baseURL+"August/test2.html", "UTF-8")
writer1.println("<Table><tr><td>45296</td><td>2014-07-23</td><td>2014-08-01</td><td>010194</td><td></td><td>120</td><td>C-00322</td><td>ANK 007</td><td></td><td></td></tr></Table>")
writer1.close()
val f = new FileOutputStream(baseURL+"test.zip")
val zip = new ZipOutputStream(new BufferedOutputStream(f))
zip.putNextEntry(new ZipEntry(baseURL+"August/test.html"))
zip.putNextEntry(new ZipEntry(baseURL+"August/test2.html"))
zip.close()
它会在正确的文件夹中生成一个 zip 文件,但是当我解压它时,它会生成一些不需要的文件夹,例如 Users、vorsz、Desktop 和 MonthlyReport。所以我需要打开它们,直到我可以访问test.html 和test2.html。当我提取 zip 文件时,我想要的只是一个带有文件或文件本身的 August 文件夹,如果可能的话,两种方式都可以。有人可以帮我吗?
注意:我也尝试过实现ZipUtils class,但仍然得到相同的结果..
【问题讨论】:
-
你为什么将
baseURL前缀传递给 ZipEntries?它嵌入到名称中,然后以 zip 名称结尾。 -
那我怎么把它指向
August目录呢? -
我看不到将文件内容添加到 zip 流中的代码,但通常您会给出添加数据的位的完整文件路径,以及你记录名字的地方
-
我只是添加文件生成代码..“位”是什么意思?这是我第一次使用这个库,所以如果你能给出清晰的例子那就太好了..
-
我没有尝试过你的代码,但我的直觉是你会在你的 zip 中获得 0 字节的文件,因为我看不到任何将文件内容添加到zip,只有文件条目。你确定你在 zip 中得到了他们的内容吗?
zip -l在生成的 zip 中的输出是什么?
标签: java playframework