IO-System类对IO的支持

一,本章目标

①掌握System对IO的三种支持:System.out,System.err,System.in

②掌握System.out及System.err的区别

③掌握输入,输出重定向




二,具体内容

使用static final声明是全局常量,只要是常量,则单词字母需要大写,这也属于java的遗留问题。

2.1  System.out

使用System.out输出的时候就是将输出的位置定义在显示器之中

FileOutputStream是定位在文件里,而System.out是定位在屏幕上。

使用OutputStream完成屏幕上的输出,因为PrintStream是其子类。

例子如下:

很明显,就是对象多态性的体现,根据子类的不同,实现的功能也不同。


2.2 System.err

它表示的是错误的标准输出,如果程序出错了,可以使用它进行输出打印。

例子如下:

  

这个时候,有人会问:使用System.out输出不也一样吗?为什么要使用System.err呢?

注意:System.out存在缓存的功能,就是你输出的东西不一定会马上输出,而Systen.err会实时输出,单独使用的时候没什么区别,但是两者一起使用的话你就能看到,输出顺序和你期望的顺序是不一样的。

2.3 System.in

System.in实际上是一个键盘的输入流,其本身是InputStream类型的对象。那么,此时就可以用次方式完成从键盘读取数据的功能。

InputStream对应的是输入流,输入流的话肯定可以从指定位置上读取,之前使用的是FileInputStream,是从文件之中读取。

例子:

所有的数据已经输入进去了,但是又问题:

问题①:指定了输入数据的长度,如果现在输入的数据超过了长度,则只有部分输入成功

问题②:指定的byte数组长度是期数的话,则还可以出现中文乱码问题。

byte b[] = new byte[5];

如果不固定长度,就只能通过判断标记为来完成。例子如下:

现在的程序真的可以了吗?如果输入中文呢?

要实现这个功能,就要使用BufferedReader类来完成。


2.4  输入输出重定向

System.out输出重定向

此时将输出的位置重定向,所以所有的内容都向指定文件打印。实际上通过此操作就可以实现错误的重定向。

System.err重定向

利用System.rtt向屏幕上输出,为了方便起见,使用内容流。例子如下:

System.in重定向

默认情况下是从键盘输入,可以通过setIn方法设置输入流的位置。

一般来说,只会使用Sysstem.out的重定向。




三,总结

①System.out是希望用户可以看到的信息,

②System.err是不希望用户可以看到的信息

③System.in对应键盘的输入

以上的三个常量都可以重定向,但是一般只建议修改setOut。

注意:System.in读取的时候有时会出现重定向问题


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值