最近這段時間,在研究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(); } } }