必威体育Betway必威体育官网
当前位置:首页 > IT技术

System.setOut()重定向输出解释

时间:2019-11-02 06:15:43来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

set out

static void test04() throws filenotfoundException {

     /* Fileoutputstream(FileDescriptor fdObj)
         创建一个向指定文件描述符处写入数据的输出文件流,该文件描述符表示一个到文件系统中的某个实际文件的现有连接。*/

    //将系统的输出流设置为标准输出流  FileDescriptor.out 系统的输出流
//系统的println(是同步的方法)
    System.setOut(new PrintStream(new FileOutputStream("d:/test/outout.txt"),false));
    System.out.println("出去拉");
    System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out),false));
    System.out.println("haha系统输出");
}

有几个问题

1、System类加载之后out对象是怎么设置为FileDescriptor.out的

2、为什么对于final对象 可以调用static void setOut(PrintStream out) 修改

native 底层是怎么样的

由于java是支持多线程的,所以标准的输入输出是共享,因此它们必须受到特别的处理,在系统初始化完成之前,线程严禁使用这几个特殊对象;又因为这些对象都是静态的,因此java的类加载机制会在System类加载的时候就会初始化,这就造成了一对矛盾;为解决这对矛盾,System在加载是将它们初始化为null,等加在完成后,通过native方法在对它们进行赋值:

在线程初始化完成后,系统会调用方法initializeSystemClass设置这几个特殊对象的值:

......
  fileinputstream fdIn = new FileInputStream(FileDescriptor.in);
        FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
        FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
        setIn0(new BufferedInputStream(fdIn));
        setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")));
        setErr0(newPrintStream(fdErr,      props.getProperty("sun.stderr.encoding")));
......

文章最后发布于: 2017-08-02 16:01:27

相关阅读

done后面接重定向文件

代码示例 #!/bin/bash while read line do disk=`echo $line|awk -F" " '{print $1}'` mount_dir=`echo $line |awk -F

[Unity]BuffDebuffSystem增益减益系统(1)

BuffControl.cs有update函数不停的判断,调用。BuffManage.cs里面含有BuffControl.cs判断的函数参数条件,并且可以随时改变,调用参数

1040:输出绝对值

时间限制: 1000 ms 内存限制: 65536 KB提交数: 10333 通过数: 7040【题目描述】 输入一个浮点数,输出这个浮点数的绝

Javaweb-HttpServletResponse的sendRedirectch重定向

一 、sendRedirect 1.1 重定向过程: 当使用HttpServletResponse的sendRedirect()时会发生重定向时,服务器会在Servlet中设置HTT

使用System.getProperty()

System.getProperty(“参数”); 参数 取得内容 user.name 用户的账户名称 user.home 用户的主目录 user

分享到:

栏目导航

推荐阅读

热门阅读