在什么条件下,PrintStream对象的checkError()方法返回true?

时间:2016-10-13 11:39:20

标签: java io printstream

如JAVA文档中所述,变量'麻烦'只要有java.io.IOException,就会设置为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()没有返回true?请举例说明变量' trouble'设置为true,方法checkError()返回true。

2 个答案:

答案 0 :(得分:1)

根据JavaDoc

  

checkError 返回true当且仅当此流遇到IOException以外的InterruptedIOExceptionsetError时方法已被调用。

答案 1 :(得分:-2)

  

即使我在写入之前删除了文件,为什么方法checkError()没有返回true?请举例说明变量' trouble'设置为true,方法checkError()返回true。

  1. 您不知道自己删除了该文件,因为您没有检查File.delete()的结果。

  2. 您创建的PrintStream没有autoFlush,因此println()对文件系统不执行任何操作。

  3. 没有理由删除该文件会导致写入IOException,即使它成功并且刷新了写入。例如,使用FileOutputStream进行尝试。

  4. 你的问题基于三个错误的假设。