PrintStream对象的checkError()方法在什么情况下返回true?
问题描述:
正如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时,请给出一个例子。
答
即使我删除之前写的文件,为什么法checkError()没有返回正确的?当变量'trouble'设置为true并且方法checkError()返回true时,请给出一个例子。
你不知道你删除的文件,因为你是不检查的
File.delete()
结果。您正在创建
PrintStream
而没有autoFlush
,因此println()
对文件系统没有任何作用。即使成功并刷新写入,删除文件也没有理由导致写入
IOException
。例如,以FileOutputStream
为例。
你的问题是基于三个错误的假设。
什么是MyPrintStream? – marstran
删除文件然后写入文件对于任何程序都很简单。尝试删除一个文件,然后从中读取:-) – dasblinkenlight
什么是MyPrintStream –