无法将System.out实例正确传递给FilterOutputStream

Sté*_*ert 4 java stream

为什么这段代码不起作用,除非我取消注释该System.out.print(" ");行?

3例:

  • System.out.print(" ");之后,outprint.write(var);在结果:h e l l o w o r l
  • System.out.print(" ");outprint.write(var);结果之前:h e l l o w o r l d
  • 没有System.out.print(" ");显示任何内容

总而言之,我将System.out实例(即a PrintStream)传递给对象的out属性FilterOutputStream(采用a OutputStream).


import java.io.FilterOutputStream;
import java.io.IOException;

public class CodeCesar {

    public static void main(String[] args) {        
        FilterOutputStream outputstream = new FilterOutputStream(System.out);
        String line = "hello world";
        char[] lst_char = line.toCharArray();

        for (char var : lst_char) {
            try {
                outputstream.write(var);
                System.out.print(" "); <--------- THIS LINE
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*niy 7

这是因为你必须手动调用outputstream.flush(); (而不是 System.out.print())