将java console的输出写入文件
2012-01-31 21:35
405 查看
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作为数据源创建对应格式的文件
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作为数据源创建对应格式的文件
相关文章推荐
- 将java console的输出写入文件
- 将java console的输出写入文件
- java把文件写入内存---输出字节流
- 黑马程序员-JAVA高级视频_IO输入与输出-20天-4(File文件写入)
- 将java的console日志写入文件
- Java 文件读写,读文件后加密写入输出文件
- Java将一般信息输出到console,将错误信心输出到文件
- java io流 创建文件、写入数据、设置输出位置
- Java:TreeSet定制排序后无法被对象输出流写入到文件
- java基础-输入输出流-大文本文件读取及写入另一文本-----(此程序print部分有bug,输出不正常,原因琢磨不清了。。。)
- Java输出xml文件——DOM法写入《Dota…
- [转]将java的console日志写入文件
- java 按顺序 列间用逗号隔开 逐行写入txt文件(使用反射、linkedHashMap实现有序输出)
- JAVA 写入文件
- 用java实现print screen,读取位图文件,将位图文件转化位jpeg格式并保存成文件输出!
- Java项目将错误写入文件【log4j】
- 【java】System.out重定向到文件,并重定向会console上
- CS0016: 未能写入输出文件
- IIS中 CS0016: 未能写入输出文件 …….*.dll拒绝访问
- CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问