2016-10-13 3 views
1

Как указано в документах JAVA, переменная «проблема» получает значение true, когда существует java.io.IOException. Я пишу программу:В каких условиях метод checkError() объекта PrintStream возвращает 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 и метод checkError() возвращает true.

+0

Что такое 'MyPrintStream'? – marstran

+0

Удаление файла, а затем запись на него - это простой материал для любой программы. Попробуйте удалить файл, а затем прочитать из него :-) – dasblinkenlight

+0

что такое 'MyPrintStream' –

ответ

1

В соответствии с JavaDoc:

checkError возвращает true тогда и только тогда, когда этот поток обнаружил IOException, кроме InterruptedIOException, или метод setError был вызван.

+0

Он считает, что он вызвал' IOException', удалив файл. Он этого не сделал, но это то, что он думает. – EJP

-2

Даже если я удалил файл перед писать, почему метод checkError() не возвращает истину? Приведите пример, когда переменная «проблема» установлена ​​в true и метод checkError() возвращает true.

  1. Вы не знаете, что вы удалили файл, так как вы не проверяя результат File.delete().

  2. Вы создаете PrintStream без autoFlush, так что println() ничего не делает с файловой системой.

  3. Нет причин, по которым удаление файла должно приводить к записи IOException, даже если это удается, и запись сбрасывается. Попробуйте, например, с помощью FileOutputStream.

Ваш вопрос основан на трех ложных предположениях.

+0

1. Файл удаляется, я использовал Thread.sleep (5000), чтобы увидеть его в графическом интерфейсе. 2. Я использовал autoFlush как true и передал newLine тоже, результат такой же. 3. Третий вопрос правильный. Я использовал DataOutputStream, и это тоже не вызывает исключения. Теперь я сомневаюсь, как попытка записи на удаленный файл не вызывает никаких исключений? –

+0

@mynameisGYAN Итак, у вас есть два ошибочных предположения. – EJP

+0

@downvoter Пожалуйста, объясните. – EJP

Смежные вопросы