2012-02-27 59 views
1

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

回答

0

您可以创建,使用写入文件的基本OutputStream

PrintStream stream = new PrintStream(out) 
+0

,如果我想我的功能打印在屏幕上?如何做到“动态”? – Helgus 2012-02-27 14:18:07

+0

我不明白“动态”部分。如果你想打印到屏幕上,那么使用'System.out',它是一个'PrintStream'对象。 – 2012-02-27 14:26:36

1

你想要做什么叫做Decorator模式:

OutputStream out = new FileOutputStream(filename) 

然后,您可以从使用创建PrintStream 。你可能想回顾this的答案(和线程)。

看看下面的类层次(java.io. *流)

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) 

祝您好运!

+0

它仅描述文件IO,但我需要实现 – Helgus 2012-02-27 14:25:20

+0

的另一种方式的想法是让所有java.io.相同*流的整个层次实现Decorator模式,这是你需要做什么。 – aviad 2012-02-27 14:28:25

0

我认为你的问题出了点问题,重点在于PrintStream本身使用一个OutputStream,当你创建它的时候它会被传递给它,你可以看到here。 所以你必须在写入你的OutputStream的方法上传递正确的PrintStream。我认为,你只需要做像一个方法:

的PrintStream createPrintStream(OutputStream中出来,字符串(或你想要什么)型);

,然后返回的打印流传递至将其上写的方法。

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