Java - архивирование файлов с сайтов? - PullRequest
2 голосов
/ 04 сентября 2011

Я просто хотел узнать, как я могу заархивировать файл в Интернете, используя java, конечно.

Я знаю, как это сделать для каталогов на жестком диске, но не для веб-сайтов:

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

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 05 сентября 2011

Итак, я так понимаю, вы хотите скачать и сжать файл.Это две разные задачи, поэтому вам нужно сделать две вещи:

  • что-то для загрузки файла из Интернета
  • что-то, чтобы сжать его в 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.Тогда вы просто копируете из одного потока в другой.Это как волшебство!

0 голосов
/ 04 сентября 2011

Под «архивацией файла в Интернете» звучит так, будто вы имеете в виду, что делаете это программно в коде на веб-сервере или сервере приложений.

Эта страница может помочь.В нем обсуждается, как использовать пакет java.util.zip: http://java.sun.com/developer/technicalArticles/Programming/compression/

0 голосов
/ 04 сентября 2011

Это то же самое, но вы должны использовать несколько методов:

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

filepath - это абсолютный путь к файловой системе (C: /.../ WEB-INF / your_folder / your_file)

...