2016-10-13 93 views
1

正如JAVA文檔中給出的那樣,只要存在java.io.IOException,變量'trouble'就會被設置爲true。我寫一個程序:PrintStream對象的checkError()方法在什麼情況下返回true?

import java.io.*; 
class First 
{ 
     public static void main(String[] args) throws Exception 
     { 
       File f = new File("a.txt"); 
       PrintStream ps = new PrintStream(f); 
       f.delete(); 
       ps.write(65); 
       boolean b = ps.checkError(); 
       System.out.println(b); //Output: false 
       ps.close(); 
     } 
} 

即使我寫之前刪除的文件,爲什麼法checkError()沒有返回正確的?當變量'trouble'設置爲true並且方法checkError()返回true時,請給出一個例子。

+0

什麼是MyPrintStream? – marstran

+0

刪除文件然後寫入文件對於任何程序都很簡單。嘗試刪除一個文件,然後從中讀取:-) – dasblinkenlight

+0

什麼是MyPrintStream –

回答

1

根據JavaDoc

checkError返回true當且僅當該流遇到IOException以外InterruptedIOExceptionsetError方法已經被調用。

+0

他認爲他通過刪除文件導致了一個IOException。他沒有,但這就是他的想法。 – EJP

-2

即使我刪除之前寫的文件,爲什麼法checkError()沒有返回正確的?當變量'trouble'設置爲true並且方法checkError()返回true時,請給出一個例子。

  1. 你不知道你刪除的文件,因爲你是不檢查的File.delete()結果。

  2. 您正在創建PrintStream而沒有autoFlush,因此println()對文件系統沒有任何作用。

  3. 即使成功並刷新寫入,刪除文件也沒有理由導致寫入IOException。例如,以FileOutputStream爲例。

你的問題是基於三個錯誤的假設。

+0

1.文件被刪除,我使用Thread.sleep(5000)在GUI中查看它。 2.我使用autoFlush作爲true,並通過newLine,結果相同。 3.第三點是正確的。我使用DataOutputStream,這也不會引發異常。現在我的疑問是如何試圖寫在刪除的文件不會導致任何異常? –

+0

@mynameisGYAN因此,這會給你帶來兩個有缺陷的假設。 – EJP

+0

@downvoter請解釋。 – EJP

相關問題