java代碼實現開啓openoffice服務和關閉sffice.exe進程

最近這段時間,在研究lucene實現網頁預覽文檔java

使用Openoffic+Swftools+flexpaper實現預覽windows

首先要開啓openoffice服務 ,每次都要手動啓動,非常麻煩,因此研究了一下windows命令,啓動openoffice服務。less

思想:將啓動openoffice服務的命令封裝在.bat文件中,使用java代碼調用該.bat文件,實現啓動openoffice服務。socket

package ytu.botao.util;
import java.io.File;
import java.io.FileWriter;
/**
 * 功能:開啓openoffice服務
 * 使用方法:直接生成該類對象
 * *****因爲本機openoffice安裝路徑不一樣,須要更改openoffice的安裝路徑
 * @author botao
 *
 */
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\n ");
                    writer.write("D:");
                    writer.write("\r\n ");
                    //D:\\Program Files\\OpenOffice 4\\program: openoffice的安裝路徑路徑
                    writer.write("cd D:\\Program Files\\OpenOffice 4\\program");
                    writer.write("\r\n ");
                    writer.write("soffice -headless -accept="+"socket,host=127.0.0.1,port=8100;urp;"+" -nofirststartwizard");
                    writer.write("\r\n ");
                    writer.write("@echo   on ");
                    writer.close();
            }
                p = rn.exec("cmd.exe /C d:\\openoprenoffice.bat");
            }
            catch (Exception e1) {
                   e1.printStackTrace();
            }
    }
}

每次啓動openoffice服務,soffice進程都佔用100M內存,非常浪費,因此在文檔轉換完以後,要關閉soffice進程ide

package ytu.botao.util;
import java.io.IOException;
import java.util.Scanner;
/**
 * 功能:關閉openoffice服務
 * 使用方法:直接生成該類對象便可
 * @author botao
 *
 */
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();
        }
    }
}
相關文章
相關標籤/搜索