JAVA标准I/0详解

     在JAVA的类库java.lang中我们经常用到System类的System.in,,System.out这种控制台输入输出,这就是所谓的标准流。本文试着对标准I/0做一个比较详细的说明。

标准I/0源码

      JAVA里面提供了3中标准I/0模型,即System.in,System.out,System.err。我们先看看这几种模型的源码:

      

public final static InputStream in = nullInputStream();  
public final static PrintStream out = nullPrintStream();  
public final static PrintStream err = nullPrintStream();  
      他们都是静态属性的字段,因此能直接用System类直接调用,这些字段实际上 private static void initializeSystemClass()中初始化的:

private static void initializeSystemClass() {  
  
    FileInputStream fdIn = new FileInputStream(FileDescriptor.in);  
    FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);  
    FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);  
    setIn0(new BufferedInputStream(fdIn));  
    setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));  
    setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));  
  
}  

     FileDescriptor.out,FileDescriptor.in和FileDescriptor.err其实是 

public static final FileDescriptor in = standardStream(0);  
public static final FileDescriptor out = standardStream(1);  
public static final FileDescriptor err = standardStream(2);  

     明显可以看出它们都是标准流,即常见的控制台输入输出,这也是系统默认的输入输出。接下来看看它们的用法与区别。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值