Java中的flush和close方法都是用于處理輸入和輸出流的操作。這兩個(gè)方法雖然有相似之處,但是在某些情況下也有區(qū)別。
首先,我們來(lái)看flush方法。flush方法是用于強(qiáng)制將緩存中的數(shù)據(jù)輸出,使其立即可見。也就是說,flush方法會(huì)將緩存中的數(shù)據(jù)刷新到輸出流中。一般情況下,如果沒有調(diào)用flush方法,緩沖區(qū)中存儲(chǔ)的數(shù)據(jù)會(huì)在緩沖區(qū)滿了之后自動(dòng)輸出,或者在流關(guān)閉時(shí)自動(dòng)刷新。但有時(shí)候需要在中途將緩沖區(qū)的數(shù)據(jù)輸出,此時(shí)就可以使用flush方法。
public void flush() throws IOException { if (closed) { throw new IOException("Stream closed"); } }
在上面的代碼中,可以看到flush方法會(huì)拋出IOException異常,如果流已經(jīng)關(guān)閉則無(wú)法刷新緩存數(shù)據(jù)。
接下來(lái)是close方法。close方法是用于關(guān)閉輸入和輸出流的方法。該方法會(huì)關(guān)閉流并釋放資源。一旦流被關(guān)閉,就不能再對(duì)其進(jìn)行操作,否則就會(huì)拋出異常。在關(guān)閉流之前,系統(tǒng)會(huì)自動(dòng)刷新緩沖區(qū)中的數(shù)據(jù),所以不需要再調(diào)用flush方法。
public void close() throws IOException { synchronized (closeLock) { if (closed) { return; } closed = true; } }
在上面的代碼中,可以看到close方法會(huì)將流關(guān)閉,如果流已經(jīng)關(guān)閉則不會(huì)進(jìn)行任何操作。
總之,flush和close方法都是處理輸入和輸出流的方法,但是在具體的操作中還是有一些區(qū)別的。