openofficeを使ってプロセスを閉じます。

2761 ワード

javaの中で、最近openofficeを使って、もしwindowsの下ならば、batを呼んでサービスをスタートさせてもいいです。あるいはレジストリの方式でサーバーを再起動させたら、openofficeを起動します。プロセスを閉じることを覚えています。コードは以下の通りです。
参照http://botao900422.blog.51cto.com/4747129/1258901


public class JavaCallOpenoffice {
    /**
     *              ,        ,    openoffice  
     */
    public JavaCallOpenoffice() {
        Runtime rn = Runtime.getRuntime();
          Process p = null;
          try {
              File file=new File("d:\\openoprenoffice.bat");
              if (false==file.exists()) {
                  System.out.println("。。。。。。。。。。");
                  FileWriter writer = new FileWriter("d:\\openoprenoffice.bat ");
                    writer.write("@echo   off ");
                    writer.write("\r
"); writer.write("D:"); writer.write("\r
"); //D:\\Program Files\\OpenOffice 4\\program: openoffice writer.write("cd D:\\Program Files\\OpenOffice 4\\program"); writer.write("\r
"); writer.write("soffice -headless -accept="+"socket,host=127.0.0.1,port=8100;urp;"+" -nofirststartwizard"); writer.write("\r
"); writer.write("@echo on "); writer.close(); } p = rn.exec("cmd.exe /C d:\\openoprenoffice.bat"); } catch (Exception e1) { e1.printStackTrace(); } } } public class DistorySoffice { private Process process=null; /** * , soffice */ public DistorySoffice() { try { // process=Runtime.getRuntime().exec("tasklist"); Scanner in=new Scanner(process.getInputStream()); while (in.hasNextLine()) { String processString=in.nextLine(); if (processString.contains("soffice.exe")) { // soffice String cmd="taskkill /f /im soffice.exe"; process=Runtime.getRuntime().exec(cmd); System.out.println("openoffice ......."); } } } catch (IOException e) { e.printStackTrace(); } } }