通过J2EE应用程序在运行应用服务器的远程机器中压缩文件夹

时间:2011-02-01 05:37:03

标签: java java-ee

我正在研究拉链J2EE应用程序。此应用程序需要以下内容:

应用程序必须在运行app服务器的远程计算机中压缩文件夹,以便其他应用程序可以直接下载此压缩文件夹,而不是逐个下载每个文件。

我能够在我的本地机器上使用绝对路径这样做,不知道如何继续使用远程机器 代码我用于在本地机器中压缩:

File file = new File(myFolderPath);    
int index = myFolderPath.lastIndexOf("/");  
String folderName =myFolderPath.substring(index);  
String folderPath = myFolderPath.substring(0, index);  
File outFolder = new File(folderPath + folderName + ".zip");  
if (!outFolder.exists()) {  
 zip(file, outFolder);  
}

此处myFolderPath是一个字符串。但是,如果它是一个URL,我应该如何继续? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

网址不允许目录列表,因此这是不可能的。您还需要服务器上的绝对路径,或者将URL转换为服务器上的绝对路径,可以将http://server/替换为webapp的根文件夹。

答案 1 :(得分:1)

我的建议是在这种情况下使用消息驱动的bean。您有一个MDB,它侦听JMS队列上的传入消息。该邮件包含要压缩的文件夹。然后消息bean将调用一个帮助程序,该帮助程序将压缩提供给MDB的文件夹。我基于您的问题中提供的详细信息。有一个应用服务器正在运行,您希望在该服务器计算机上执行压缩操作。在我看来,它会更加高效和清洁。

答案 2 :(得分:1)

  

应用程序必须压缩文件夹   app server所在的远程机器   运行

我猜你对要拉链的目录的路径有一个很好的想法。所以你在本地完成了相同的事情,但是在servlet中,创建zip文件并在HttpServletResponse的输出流中写入zip的内容以便下载。