2016-10-13 58 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

相关问题