我只是想知道如何使用java壓縮網上的文件,當然。Java - 從網站壓縮文件?
我知道如何爲硬盤驅動器上的目錄做到這一點,而不是網站:
ZipFile zipfile = new ZipFile("C:/Documents and Settings/User/desktop/something.file");
非常感謝你。
我只是想知道如何使用java壓縮網上的文件,當然。Java - 從網站壓縮文件?
我知道如何爲硬盤驅動器上的目錄做到這一點,而不是網站:
ZipFile zipfile = new ZipFile("C:/Documents and Settings/User/desktop/something.file");
非常感謝你。
這是相同的,但你必須使用兩個方法:
String filePath = getServletContext().getRealPath("/WEB-INF/your_folder/your_file");
filepath是絕對的文件系統路徑(C:/.../ WEB-INF /您的文件夾/ your_file)
呃,那不是我想要做的。顯然該文件需要是JAR文件?不過,是不是有更簡單的方法來從網絡服務器壓縮文件?而不是從你的驅動器。 – john
通過'在網上壓縮文件'這聽起來像你的意思是在網頁或應用程序服務器的代碼中以編程方式進行編程。
此頁面可能會有幫助。它討論瞭如何使用java.util.zip包:http://java.sun.com/developer/technicalArticles/Programming/compression/
所以我認爲你要下載和壓縮一個文件。這是兩個不同的任務,所以你需要兩樣東西做到這一點:
我建議你使用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
。那麼你只是從一個流複製到另一個流。這就像魔術一樣!
你是什麼意思「在網上的文件」?就像你通過一個'HttpUrlConnection'從一個刪除網站收到的東西? –
基本上,不是壓縮位於硬盤驅動器上的文件 - 我希望它從網絡服務器壓縮文件,給定http://blahblablah.com/file.txt的地址(這是我的意思是「從網絡「)。 – john
如果你的意思是你想在Web服務器上壓縮文件併發送到你的程序已經壓縮,那麼你不能。服務器需要爲您做這件事,並將壓縮文件發送給您。你的問題並不清楚。 –