Java写入File或System.out

用户名

我需要将字符写入文件或标准输出。我很好奇是否可以用一种方法来完成。

现在我有这样的事情:

OutputStream out;    
if(toConsole)
   out = System.out;
else
   out = new FileOutputStream(file);

write(out);
}
void write (OutputStream str){
 ....
 str.write(string);

但这是我正在使用的问题(如果“ str”是System.out)写而不是打印?(打印java doc:“根据平台的默认字符编码将字符串的字符转换为字节”)如果要使用PrintWriter(或PrintStream)作为参数,则无法使用BufferedWriter,并且写入文件的速度会变慢。

可以使用相同的代码(和相同的方法)来写入文件和System.out吗?(这是为我的学校项目设计的,因此我希望它是“纯”且完全正确的)

蒂普纳

您要完成的工作是将文件输出和控制台输出视为相同。这是可能的,因为System.outPrintStream,您可以PrintStream为这样的文件创建一个

new PrintStream(yourFile) 

BufferedOutputStream在两者之间插入

new PrintStream(new BufferedOutputStream(new FileOutputStream(yourFile))).

请注意,这不是必需的,因为它本身PrintStream缓冲其输出

我将创建一个变量(全局变量或非全局变量),以表示当前输出。这可能是一个PrintStream,要么System.out,或PrintStream周围FileOutputStream,无论你的愿望。然后,您可以将此流传递给write方法或直接在其上调用print方法。

这样做的好处是,您无需进行大量代码修改即可轻松切换此设置,也可以将其重定向到任何您不想使用的位置。将其重定向到文件 没有问题System.out当前编写该方法的方式不会获得纯粹的灵活性。

可以(不是说应该这样做),也System.out可以使用直接重定向System.setOut但是,这是不好的风格,因为它很不常见,如果其他人尚未看到对的调用,可能会使其他人感到困惑System.setOut

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止JVM写入System.out或从System.in读取

来自分类Dev

防止JVM写入System.out或从System.in读取

来自分类Dev

java System.out丢失了

来自分类Dev

Java使自己的System.out

来自分类Dev

System.out.println-Java

来自分类Dev

将System.Out.Println写入文本文件

来自分类常见问题

为什么我的Out-File不将输出写入文件

来自分类Dev

为什么我的Out-File不将输出写入文件

来自分类Dev

读取System.out Java测试

来自分类Dev

Java System.out未被重定向

来自分类Dev

Java-System.out.printf舍入浮动

来自分类Dev

Java - System.out.printf rounding floats

来自分类Dev

操纵或编辑System.out(java)

来自分类Dev

较短版本的Java System.out.println()

来自分类Dev

禁止写入nohup.out

来自分类Dev

禁止写入nohup.out

来自分类Dev

JAVA array out put

来自分类Dev

首选的System.out.print()或System.out.printf()?

来自分类Dev

无法从“out System.DateTime”转换?'out System.DateTime

来自分类Dev

如何对没有返回值但写入System.out的方法进行单元测试

来自分类Dev

Eclipse Breakpoint System.out

来自分类Dev

System.out.println与PrintWriter

来自分类Dev

在System.out上同步

来自分类Dev

Java中的System.out.println-是否在本机方法中初始化out?

来自分类Dev

Java-System.out的PrintStream的流是什么?

来自分类Dev

Java 8中“ System.out :: println”的用途是什么

来自分类Dev

System.out.println()的消耗时间;Java语句?

来自分类Dev

Java:使System.out.println()参数跨越多行?

来自分类Dev

Java中System.out.println()和return之间的区别