2012-02-27 63 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