Java - 从网站上压缩文件?

时间:2011-09-04 14:10:29

标签: java web zip directory

我当然想知道如何使用java在网上压缩文件。

我知道如何为硬盘驱动器上的目录执行此操作,但不知道如何对网站执行此操作:

ZipFile zipfile = new ZipFile("C:/Documents and Settings/User/desktop/something.file");

非常感谢。

3 个答案:

答案 0 :(得分:1)

所以我认为你想下载并压缩文件。这是两个不同的任务,所以你需要做两件事:

  • 从网上下载文件
  • 将其压缩成zip文件的内容

我建议您使用Apache HttpComponents下载文件,并Apache Compress进行压缩。

然后代码会像这样......

    // Obtain reference to file
    HttpGet httpGet = new HttpGet("http://blahblablah.com/file.txt");
    HttpResponse httpResponse = httpclient.execute(httpGet);
    HttpEntity httpEntity = httpResponse.getEntity();

    // Create the output ZIP file
    ZipArchiveOutputStream zip = new ZipArchiveOutputStream(zipFile);

    try {
        // Write a file header in the .zip file
        ArchiveEntry entry = new ZipArchiveEntry("file.txt");
        zip.putArchiveEntry(entry);

        // Download the file and write it to a compressed file
        IOUtils.copy(httpEntity.getContent(), zip);

        // The file is now written
        zip.closeArchiveEntry();
    } finally {
        // Ensure output file is closed
        zip.close();
    }

它是如何工作的? HttpComponents正在获取文件的InputStream,而Compress正在提供OutputStream。然后你只是从一个流复制到另一个流。这就像魔术!

答案 1 :(得分:0)

它是一样的,但你必须使用几种方法:

String filePath = getServletContext().getRealPath("/WEB-INF/your_folder/your_file");

filepath是绝对文件系统路径(C:/.../ WEB-INF / your_folder / your_file)

答案 2 :(得分:0)

通过'压缩网络上的文件',听起来像是指在网络或应用服务器的代码中以编程方式执行此操作。

此页面可能有所帮助。它讨论了如何使用java.util.zip包:http://java.sun.com/developer/technicalArticles/Programming/compression/