我想使用PrintWriter或PrintStream将格式化的字符串写入到一个输出流(我无法控制它的创建)。然而,冲洗底层的OutputStream有很大的性能打击。
是否需要刷新PrintWriter / PrintStream。
如果我需要刷新PrintStream / PrintWriter;我可以这样做而不刷新底层OutputStream,还是需要创建一个“刷新保护器”OutputStream来包装底层流?
为了在这一点上更清楚一点,我想要实现
public void writeSomeString(OutputStream foo);但是对于同一个OutputStream (foo),这个方法可能会被多次调用。每个调用都必须构造自己的PrintWriter。我知道这样做很难看,但我无法控制接口或foo的创建。
我试图避免每种方法都必须刷新foo,只为了刷新自己的PrintWriter / PrintStream。
所以我想:
public void writeSomeString(OutputStream foo) {
PrintStream s = new PrintStream(foo);
s.println("bar");
// other code
}我想完全避免这种方法--冲洗foo
发布于 2012-05-17 18:13:25
需要在以下条件下刷新PrintWriter:
ServerSocket s = new ServerSocket(4444);
Socket incoming = s.accept();
OutputStream output = s.getOutputStream();
PrintWriter pw = new PrintWriter(output,true);
System.out.println(pw.write(new Scanner(System.in).nextLine()));PrintWriter构造函数中的第二个参数是flush,它接受布尔数据类型,我们需要刷新数据,所以即使缓冲区不是满的,它也会被抛到控制台上。
https://stackoverflow.com/questions/10640360
复制相似问题