Используйте два способа для вывода в System.out, но почему только для фронтальных выходов? - PullRequest
0 голосов
/ 26 мая 2019

В рамках метода я экспериментировал с двумя способами вывода на System.out: один с помощью OutputStreamWriter, а другой с помощью PrintWriter.Я обнаружил, что выводится только тот, который находится спереди, а сзади - нет.Это почему?

Это потому, что когда автор первой закрывается неявно, он также закрывается System.out?

Как я могу заставить оба способа (один за другим) оба вывести?

try (BufferedWriter bw = new BufferedWriter (new PrintWriter(System.out, true))) //  specify System.out for the output stream and "true" for automatic flushing.
    {
    bw.write("system.out->printwriter->bufferedwriter");
    bw.write("\n");
    // to make sure the content be printed.
    // need to flush the output from the buffer to destination
    // You can call flush or close 
    bw.flush();
    }
catch (IOException e)
    {
        e.printStackTrace();
    }



try ( BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(System.out)))
    {
    bw2.write("system.out->outputstreamwriter->bufferedwriter");
    bw2.write("\n");
    // need to flush the output from the buffer to destination      
    bw2.flush();
    }
catch (IOException e)
    {
        e.printStackTrace();
    }

будет выводить только system.out->printwriter->bufferedwriter

try ( BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(System.out)))
    {
    bw2.write("system.out->outputstreamwriter->bufferedwriter");
    bw2.write("\n");
    // need to flush the output from the buffer to destination      
    bw2.flush();
    }
catch (IOException e)
    {
        e.printStackTrace();
    }

try (BufferedWriter bw = new BufferedWriter (new PrintWriter(System.out, true))) //  specify System.out for the output stream and "true" for automatic flushing.
    {
    bw.write("system.out->printwriter->bufferedwriter");
    bw.write("\n");
    // to make sure the content be printed.
    // need to flush the output from the buffer to destination
    // You can call flush or close 
    bw.flush();
    }
catch (IOException e)
    {
        e.printStackTrace();
    }

будет выводить только system.out->outputstreamwriter->bufferedwriter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...