如何设置输出流Java



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

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

您想要做的叫做Decorator模式。你可能想复习一下这个答案(以及这个帖子)。

看看下面的类层次结构(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) 

祝你好运!

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

OutputStream out = new FileOutputStream(filename)

然后,您可以使用创建一个PrintStream

PrintStream stream = new PrintStream(out)

我认为您的问题有问题,关键是PrintStream本身使用了一个OutputStream,该OutputStream在您创建它时传递给它,正如您在这里看到的那样。因此,您必须在OutputStream中写入的方法处传递正确的PrintStream。我认为你只需要做一个方法,比如:

PrintStream createPrintStream(输出流输出,字符串(或您想要的)类型);

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

也许工厂设计模式可以帮助你的工厂方法设计模式

相关内容

  • 没有找到相关文章

最新更新