System.out .write() выполняется, но не печатается

public class BRRead {
  public static void main(String[] args)   {
    int b;
    b='A';
    System.out .write(b);
    System.out .write('\n');
   }    
}

Поэтому, когда я выполняю вышеуказанную программу, я получаю ожидаемый результат - А, но когда закомментирую последнюю строку System.out.write('\n'); программа выполняется, но не печатает вывод - А. Может ли кто-нибудь объяснить, что именно здесь происходит?

public class BRRead {
  public static void main(String[] args)   {
    int b;
    b='A';
    System.out .write(b);
    //System.out .write('\n');
  }        
}

4 ответа

Решение
public void write(int b)

Записывает указанный байт в этот поток. Если байт является новой строкой и включена автоматическая очистка, то будет вызван метод очистки.

В вашем примере flush() не вызывается автоматически, если вы вызываете его явно, символ будет напечатан.

Вызов System.out.flush() в конце вашего кода

Отсюда

По сути, Java не гарантирует, что вывод фактически отправляется в файл, сокет, экран или любое другое устройство вывода, пока вы не вызовете flush () для вашего OutputStream или Writer, или пока он не будет закрыт. OutputStream или Writer могут буферизовать вывод, что означает, что он будет сохранен и отправлен большими кусками для эффективности. Вы не можете предсказать, как это будет сделано.

Кстати, PrintWriter.println() автоматически вызовет flush (), хотя здесь это не имеет значения. Но в любом случае общее правило заключается в том, что если вы хотите, чтобы выходные данные появлялись где-то немедленно, и вы не используете PrintWriter.println() (или PrintStream.println()), то вызовите flush () самостоятельно.

От write(int bytevalue)тело метода, аргумент кажется буферизованным/сохраненным временно и фактически не записывается, пока вы не напишете новую строку.

Другие вопросы по тегам