2017-03-14 20 views
0

我有file.I問題,我有應用程序1和應用程序2,應用程序1創建文件(有處理時間)。當過程應用程序1結束時,我想從應用程序2中創建的文件中使用。我使用輪詢檢查創建的文件,但無法理解文件是否關閉(流程應用程序1結束)。 源應用程序1已鎖定,我想要更改源應用程序2.Java文件關閉

+0

雖然從應用程序寫1,將文件保存爲' .extension.part'。完成寫作後,將其重命名爲所需的名稱。因此,您的應用程序2將獲得完整的文件 –

+0

我無法訪問應用程序1源。 –

+0

在'while(true)'中使用'try catch'。繼續嘗試打開文件。一旦你能夠打開文件,從循環中斷開。 –

回答

1

既然你沒有訪問該應用1.我們唯一能做的事情就是從應用程式2.

如果你是在Windows系統上,該系統將不允許您更改文件名如果其他進程正在讀取/寫入文件。

您可以嘗試重新命名應用程序2中的輸出文件。如果工作正常,則該文件未由其他進程打開,您可以開始處理輸出文件。當然你可能希望改回文件名。

renameTo Java Doc

請注意,* NIX系統會有不同的行爲

0

您可以使用該文件的臨時名稱,然後在完全寫入後將其重命名爲正確的名稱。

您可以創建一個「.lock」文件來表明它被鎖定以便讀取或寫入。讀取或寫入完成後,您可以刪除鎖定文件。如果鎖定文件不存在,則每個應用程序只能讀取或寫入文件(並且應在執行讀取或寫入操作之前創建鎖定文件,並在完成後立即刪除它)。

+0

不幸的是,您的答案需要控制所有涉及的應用程序,並且OP無法控制將創建文件的應用程序。 –

+0

啊,好的,我發現很難解析這個問題。 –