2012-10-01 34 views
0

在我的應用程序中,首先我將xls,xlsx,zip文件以二進制格式上傳到數據庫中。如何在Java中抓取和處理Excel,IE,Winzip關閉事件

其次,我創建一個臨時文件夾來加載二進制文件並將它們轉換爲臨時文件夾中的原始格式,並自動打開它以供用戶進行概述。

但是出於安全考慮,我希望在用戶關閉excel或winzip應用程序後刪除臨時文件。

在我看來,我需要趕上像excel和winzip這樣的應用程序的結束事件,然後做其餘的工作。

我看到了一些使用C#或VB的解決方案。我希望Java也能完成這項工作。你能給我一些建議嗎?

回答

0

您可以使用Process.waitFor()使引發外部進程的線程等待它完成。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html

如果你不希望阻塞主線程(因爲你可能不應該這樣做,例如,如果這是一個UI應用程序),啓動一個單獨的線程來執行外部轉換。

+0

嗨,埃裏克感謝您的回答。我注意到文檔說「導致當前線程等待,如果有必要,直到由此Process對象表示的進程已終止。」我想知道用戶是否已經在運行應用程序之前打開了一個excel文件,當我的應用程序打開另一個新的excel文件,該進程等待的是excel.exe,如果我關閉了一個excel文件,該進程終止所有兩個打開的excel文件,因爲它們共享相同的進程。我對嗎?有點令人困惑。謝謝 –

+0

請嘗試以下實驗:單擊Windows開始按鈕並在運行欄中輸入Excel。點擊進入。重複一次。檢查任務管理器。您有兩個獨立的Excel進程正在運行,每個都有自己的進程ID。如果您以編程方式啓動Excel,它將發生在一個獨特的過程中。 *但是*,如果您通過文件關聯加載Excel文檔(例如,雙擊Excel文件),則Excel會將該文檔加載到當前正在運行的Excel進程中(如果可以)。 –

+0

嗨,Eric J.我明白了。非常感謝您的幫助。 –