Java PrintStream对象的checkError()方法在什么条件下返回true?
正如JAVA文档中所给出的,每当出现JAVA.io.IOException时,变量“trouble”就会设置为true。我写了一个程序:Java PrintStream对象的checkError()方法在什么条件下返回true?,java,io,printstream,Java,Io,Printstream,正如JAVA文档中所给出的,每当出现JAVA.io.IOException时,变量“trouble”就会设置为true。我写了一个程序: import java.io.*; class First { public static void main(String[] args) throws Exception { File f = new File("a.txt"); PrintStream ps
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()没有返回true?请举例说明变量'trouble'设置为true时,方法checkError()返回true。根据:
checkError
返回true
当且仅当此流遇到IOException
以外的InterruptedIOException
或已调用该方法时
即使我在写之前删除了文件,为什么方法checkError()没有返回true?请给出一个例子,当变量'trouble'设置为true时,方法checkError()返回true
file.delete()
的结果PrintStream
没有autoFlush
,因此println()
对文件系统没有任何影响IOException
,即使删除成功并刷新了写入。例如,用FileOutputStream
试试你的问题建立在三个错误的假设上。什么是
MyPrintStream
?删除一个文件然后写入它对于任何程序来说都很简单。尝试删除一个文件,然后从中读取:-)什么是MyPrintStream
1。文件正在被删除,我使用Thread.sleep(5000)在GUI中查看它。2.我使用autoFlush作为true并传递了换行符,结果是一样的。3.第三点是正确的。我使用了DataOutputStream,这也不会引发异常。现在我的疑问是,试图在已删除的文件上写入内容如何不会导致任何异常?@mynameisGYAN这就给你留下了两个有缺陷的假设。他认为删除该文件导致了IOException
。他没有,但他是这么想的。