Redirect output(stdout/stderr) to a frame

原创 2001年05月04日 14:16:00
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class RedirectedFrame extends Frame {
    TextArea aTextArea = new TextArea();
    PrintStream aPrintStream  =
       new PrintStream(
         new FilteredStream(
           new ByteArrayOutputStream()));

    boolean logFile;

    RedirectedFrame(boolean logFile) {
       this.logFile = logFile;
       System.setOut(aPrintStream);
       System.setErr(aPrintStream);
       setTitle("Error message");
       setSize(500,300);
       setLayout(new BorderLayout());
       add("Center" , aTextArea);
       displayLog();
       addWindowListener
          (new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
                dispose();
                }
             }
          );
       }

    class FilteredStream extends FilterOutputStream {
       public FilteredStream(OutputStream aStream) {
          super(aStream);
          }

       public void write(byte b[]) throws IOException {
          String aString = new String(b);
          aTextArea.append(aString);
          }

       public void write(byte b[], int off, int len) throws IOException {
          String aString = new String(b , off , len);
          aTextArea.append(aString);
          if (logFile) {
             FileWriter aWriter = new FileWriter("error.log", true);
             aWriter.write(aString);
             aWriter.close();
             }
          }
       }

    public void displayLog() {
       Dimension dim = getToolkit().getScreenSize();
       Rectangle abounds = getBounds();
       Dimension dd = getSize();
       setLocation((dim.width - abounds.width) / 2,
          (dim.height - abounds.height) / 2);
       setVisible(true);
       requestFocus();
       }

    public static void main(String s[]){
       try {
          // force an exception for demonstration purpose
          Class.forName("unknown").newInstance();
          }
       catch (Exception e) {
          // for applet, always RedirectedFrame(false)
          RedirectedFrame r = new RedirectedFrame(true);
          e.printStackTrace();
          }
       }
    }

转载:stdin, stdout, stderr以及重定向

转载:http://my.oschina.net/qihh/blog/55308   stdin, stdout, stderr以及重定向 作者:Sam(甄峰) sam_code@hotmail...
  • huguangshanse00
  • huguangshanse00
  • 2014年02月09日 11:58
  • 3495

第4章 处理用户输入与显示数据------------(标准文件描述符、STDIN/STDERR/STDOUT、临时重定向、永久重定向exec)

4.4 显示数据 4.4.1 标准文件描述符          Linux系统将每个对象当作文件处理。这包括输入和输出过程。Linux使用文件描述符(file descriptor)标识每个文件对象。...
  • henni_719
  • henni_719
  • 2016年12月12日 11:03
  • 566

stdout和stderr标准输出的区别

stderr和stdout详细解说 今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。 int fprintf(FILE *stream,char *format,[arg...
  • c_phoenix
  • c_phoenix
  • 2016年10月19日 11:49
  • 3179

stderr和stdout详细解说

cstdio> object stderr FILE * stderr; Standard error stream The standard error stream ...
  • oppo62258801
  • oppo62258801
  • 2017年04月07日 14:56
  • 2366

stderr和stdout详细解说

今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。 int fprintf(FILE *stream,char *format,[argument]); 在此之前先区分...
  • origin_lee
  • origin_lee
  • 2014年11月28日 15:27
  • 2310

C++ stderr/stdout 重定向到文件

通常,stderr和stdout被用来输出内容显示到控制台,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出重定向到文件。文章先...
  • cwqcwk1
  • cwqcwk1
  • 2015年06月21日 03:05
  • 5040

linux shell 屏幕显示stdout stderr的同时 分别重定向到文件

I'm assuming you want to still see STDERR and STDOUT on the terminal. You could go for Josh Kelley's...
  • LEEtcWorks
  • LEEtcWorks
  • 2013年12月04日 22:40
  • 4219

fclose关闭stdout的问题

1 #include   2 #include   3 #include   4 #include   5    6 int main(void) {   7    8     ...
  • u012570105
  • u012570105
  • 2015年08月22日 14:13
  • 627

关闭tomcat6下的stdout日志

今天下午客户打了电话反映tomcat下的日志文件(stdout日志)太大(已达到几G的空间),而项目部署所在的虚拟机磁盘空间不多,能不能把大文件的日志文件关闭掉。 于是整理了以下,给客户发了封邮件,...
  • baohuan_love
  • baohuan_love
  • 2014年06月11日 17:51
  • 2326

详解C语言中的stdin,stdout,stderr

我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用。说到这不得不提及stdin,stdout,stderr。想想,我们在用C去写文件时的操作,Fil...
  • Crazy_Tengt
  • Crazy_Tengt
  • 2017年05月24日 22:36
  • 1837
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Redirect output(stdout/stderr) to a frame
举报原因:
原因补充:

(最多只允许输入30个字)