有沒有辦法做到這一點?在JAVA終止程序時發現異常
我正在編寫一個程序,必須迭代很長一段時間,而這樣做,它應該寫入文件。我想在手動終止程序後立即關閉流,並避免由於未關閉流而丟失數據的風險。應該有一種做異常處理的方法,但我不確定。任何類型的建議都非常感謝!
謝謝
有沒有辦法做到這一點?在JAVA終止程序時發現異常
我正在編寫一個程序,必須迭代很長一段時間,而這樣做,它應該寫入文件。我想在手動終止程序後立即關閉流,並避免由於未關閉流而丟失數據的風險。應該有一種做異常處理的方法,但我不確定。任何類型的建議都非常感謝!
謝謝
我找到了一個方法!我沒有注意到程序終止時流會自動關閉......
由於在write()方法後沒有使用flush()方法,數據還沒有被寫入,像這樣:
out.write(line);
out.flush();
謝謝大家的幫助
這不是你的問題的答案!關閉文件,當你不需要它了。 out.close() – AlexWien
使用異常來控制程序執行,你描述的方式是糟糕的設計。使用關閉鉤子會更好。
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// Close streams here
}
});
這將處理大多數正常關機就好了,雖然在硬停止(SIGKILL)的情況下,不能保證關機鉤來運行。但是這並不比如果你試圖通過finally塊關閉流更糟。
我試圖測試這一點,但我無法編譯......但是,我已經發現了這個問題。 – rsy
上面的代碼爲我編譯和工作。你遇到了什麼問題? – Perception
使用try-finally從句,其中流在'finally'塊封閉。或者,如果您使用的是Java 7,請使用[try-with-resources block](http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)。 – Vulcan