博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java知识积累——同时输出到控制台和指定文件,或直接输出到指定文件
阅读量:6124 次
发布时间:2019-06-21

本文共 1842 字,大约阅读时间需要 6 分钟。

很多时候的实际需求都不允许我们只是把结果输出到console就可以了,那么怎么把程序运行结果输出到指定文件,以及怎么能同时让其输出到指定文件和console呢?

通过网上搜索过来人的文章,找到了如下解决方法,感谢前人的分享~

1.首先我们需要自己编写一个类,并且继承OutputStream类,重写其write(int b)方法。这个类主要实现创建两条输出流。

1 import java.io.IOException; 2 import java.io.OutputStream; 3  4 public class MultiOutputStream extends OutputStream{ 5      6     OutputStream output1; 7     OutputStream output2; 8      9     public MultiOutputStream(OutputStream output1,OutputStream output2){10         this.output1 = output1;11         this.output2 = output2;12     }13     14     @Override15     public void write(int b) throws IOException {16         // TODO Auto-generated method stub17         output1.write(b);18         output2.write(b);19     }20     21 }

 

2.主程序中进行配置

1     public static void main() throws IOException{   2         FileOutputStream propFile = null; 3         MultiOutputStream multi = null; 4          5         try { 6             propFile = new FileOutputStream("src/applicationContext.properties"); 7             //设置同时输出到控制台和prop文件 8             multi = new MultiOutputStream(new PrintStream(propFile),System.out); 9             System.setOut(new PrintStream(multi));10             11             System.out.println("输入任何文字均可~~")12         } catch (Exception e) {13             e.printStackTrace();14         } finally{15             multi.close();16             input.close();17             propFile.close();18         }19     }

 

程序进行到第九行后,但凡是原来只输出到控制台的信息都会同时输出到propFile所指向的文件当中。

当设置了双输出后,如何将输出流重新只指向控制台呢?有两种方法,其一是在开始setOut时,先记录那时的输出流指向,以供后续调用。

 

 

PrintStream console = System.out;System.setOut(new PrintStream(multi));//变成了双输出System.setOut(console);//又设置成了之前只输出到控制台的模式

 

其二的方法不是通过之前记录,而是直接重定向到标准输出。

//通用重定向输出流到console,不用之前记录System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));

 

 

 

转载于:https://www.cnblogs.com/FlameRen/archive/2013/03/07/2948353.html

你可能感兴趣的文章
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
android studio修改新项目package名称
查看>>