こんにちは、
プログラムでjarファイルの内容を抽出しようとしていますが、サーブレットを使用せずにローカルマシンでjarファイルの内容を抽出できるコードスニペットを見つけました 。
コードが機能することがわかったので、ローカルのサーブレット環境、特に Tomcat 7.0.22 で使用しようとしています。これまでのところ、以下のコードがありますが、jar の内容を出力できませんでした。出力ストリームを正しく処理していないと思われるため、ローカル Tomcat サーバーのローカル ディレクトリに何も保存されません。
誰かが私を正しい方向に向けたり、読み取った内容をファイルに出力するようにコードを修正する方法についてアドバイスを提供したりできますか?
import java.io.*;
import java.util.*;
import javax.servlet.*;
@SuppressWarnings("serial")
public class JarExtractor extends HttpServlet {
@SuppressWarnings("rawtypes")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String path = getServletContext().getRealPath("test.jar");
JarFile jar = new JarFile(path);
Enumeration jarEnum = jar.entries();
while (jarEnum.hasMoreElements()) {
JarEntry file = (JarEntry) jarEnum.nextElement();
File f = new File(file.getName());
if (file.isDirectory()) { // if its a directory, create it
f.mkdir();
continue;
}
InputStream in = jar.getInputStream(file); // get the input stream
OutputStream output = new FileOutputStream(f);
while (in.available() > 0) { // write contents of 'is' to 'fos'
output.write(in.read());
}
output.close();
in.close();
}
}
catch(Exception ex)
{
//------
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try
{
doPost(request,response);
}
catch (ServletException e)
{
//
}
catch (IOException e)
{
//
}
}
}
どなたでもご利用いただけますので、どうぞよろしくお願いいたします。
週末をお楽しみください!