java console输出_将java console的输出写入文件

FileOutputStream bos = new FileOutputStream("output.txt");

System.setOut(new PrintStream(bos));

System.out.println("output to output.txt");

这样,console的输出全部写入文件output.txt,但是控制台不会有输出信息。

如果希望控制台也有输出:

新建一个继承java.io.OutputStream的类,实现多输出方式

import java.io.IOException;

import java.io.OutputStream;

public class MultiOutputStream extends OutputStream {

OutputStream outputStream1,outputStream2;

public MultiOutputStream(OutputStream stream1, OutputStream stream2 )

throws IOException{

outputStream1 = stream1;

outputStream2 = stream2;

}

@Override

public void write(int b) throws IOException {

// TODO Auto-generated method stub

outputStream1.write(b);

outputStream2.write(b);

}

}

再调用该类的对象

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.PrintStream;

class Out2File {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

PrintStream oldPrintStream = System.out;

FileOutputStream bos = new FileOutputStream("output.txt");

MultiOutputStream multi = new MultiOutputStream(new PrintStream(bos),oldPrintStream);

System.setOut(new PrintStream(multi));

System.out.println("jjjjjjjjjjj");

}

}

这样console和文件中都会有输出。

参考材料:

1、要解决console和文件同时输出的问题还需要自己实现一个OutputStream,让OutputStream能同时写入多个输出.

首先继承java.io.OutputStream,然后实现public abstract void write(int b) throws IOException; 并且覆写java.io.OutputStream中的其他的方法,具体的实现方式按照自己的需求来做,这里就不做出具体的实现了.

通过实现自己实现OutputStream之后,

PrintStream printStreamOut = new PrintStream(outputStreamOut);

PrintStream printStreamErr = new PrintStream(outputStreamErr);

中分别把outputStreamOut和outputStreamErr对象换成自己实现的OutputStream对象,这样就可以实现在一个OutputStream对象中进行多个输出操作.

按照以上的思路进行的实现,可以完全把控制台的所有的输出写入到日志文件中,包括System.out.println这样的输出.

2.Re:Java控制台的内容如何输出到文件? [Re: GlennLi] Copy to clipboard

Posted by: zcjl

Posted on: 2006-03-13 14:18

对于标题的问题,可以参考下面这段代码:

PrintStream oldPrintStream = System.out;        ByteArrayOutputStream bos = new ByteArrayOutputStream();        System.setOut(new PrintStream(bos));        System.out.println("this is the text to output");        System.setOut(oldPrintStream);        System.out.println(bos.toString());

有几点需要注意:

1.保留原始的System.out这个对象(上面的oldPrintStream),在对console输出内容转移完成后记得恢复。

2.这里的ByteArrayOutputStream bos = new ByteArrayOutputStream();可以替换为任何OutputStream对象,比如你这里要输出到文本文件,就可以使用FileOutputStream

3.要输出为.doc等格式,则需要对应格式的处理工具支持(如:word和excel文档可以使用poi,pdf可以使用itext等),然后使用相应的outputstream对象替换System.out,并把这些outputstream作为数据源创建对应格式的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值