gpt4 book ai didi

Java zip - 压缩不需要的目录

转载 作者:行者123 更新时间:2023-11-29 03:14:26 26 4
gpt4 key购买 nike

我是 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 文件,但是当我解压缩它时,它会生成一些不需要的文件夹,例如 UsersvorszDesktopMonthlyReport。所以我需要打开它们,直到我可以访问 test.htmltest2.html。当我提取 zip 文件时,我想要的只是一个 August 文件夹及其文件或文件本身,如果可能的话。有人可以帮我吗?

注意:我也曾尝试实现 ZipUtils class , 但仍然得到相同的结果..

最佳答案

根据您更新的代码,我认为您需要做的不是弄乱文件系统,而是直接将内容生成到 zip 中,并完全控制名称

val baseURL: String = "/Users/vorsz/Desktop/MonthlyReport/"

val f = new FileOutputStream(baseURL+"test.zip")
val zip = new ZipOutputStream(new BufferedOutputStream(f))

zip.putNextEntry(new ZipEntry("/August/test.html"))
val writer = new PrintWriter(new OutputStreamWriter(zip, "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.flush()

zip.putNextEntry(new ZipEntry("/August/test2.html"))
val writer1 = new PrintWriter(new OutputStreamWriter(zip, "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.flush()

zip.close()

这将添加一个没有基目录的名称条目,然后将内容写入 zip,然后添加另一个条目,然后写入其他内容。没有文件系统缓冲,不用担心名称,只生成随手压缩

关于Java zip - 压缩不需要的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27497811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com