如何设置输出流Java

时间:2012-02-27 14:11:55

标签: java string file stream java-io

我的意思是,如果我要创建某种方法:void setOutputStream(PrintStream stream)。 所以stream变量是一个输出流,我将写入我的数据(最好是String变量)。 问题是,它将如何动态地确定输出流并在那里正确地写入我的数据,即对于System.out它将在屏幕上打印数据,对于文件流,它会将我的数据写入文件。

4 个答案:

答案 0 :(得分:4)

我认为你正在寻找java.lang.System#setOut(PrintStream stream)方法。这基本上允许您以编程方式重新分配标准输出流。

答案 1 :(得分:1)

您要做的是Decorator模式。您可能想要查看this回答(和主题)。

查看以下类层次结构(java.io. * Stream)

java.lang.Object 
    java.io.Console (implements java.io.Flushable) 
    java.io.File (implements java.lang.Comparable<T>, java.io.Serializable) 
    java.io.FileDescriptor 
    java.io.InputStream (implements java.io.Closeable) 
            java.io.ByteArrayInputStream 
            java.io.FileInputStream 
            java.io.FilterInputStream 
                    java.io.BufferedInputStream 
                    java.io.DataInputStream (implements java.io.DataInput) 

祝你好运!

答案 2 :(得分:0)

您可以使用以下命令创建写入文件的基本OutputStream

OutputStream out = new FileOutputStream(filename)

然后,您可以使用以下方式创建PrintStream

PrintStream stream = new PrintStream(out)

答案 3 :(得分:0)

我认为你的问题出了点问题,关键是PrintStream本身使用的是在创建它时传递给它的OutputStream,你可以看到here。 因此,您必须在OutputStream中写入的方法传递正确的PrintStream。我认为你只需要做一个像这样的方法:

PrintStream createPrintStream(OutputStream out,String(或你想要的)类型);

然后将返回的打印流传递给将在其上写入的方法。

也许工厂设计模式可以帮助您Factory Method Design Pattern