首页 百科知识 标准输入输出流

标准输入输出流

时间:2022-04-09 百科知识 版权反馈
【摘要】:12.2.5 标准输入输出流一般地,标准输入设备是键盘,标准输出设备是终端显示器,标准错误输出设备也是显示器。System类是继承Object类的终极类,它有3个类变量in、out和err,分别表示标准输入流、标准输出流和标准错误输出流。要求一是用#作为键盘输入字符的结束标志,二是不使用try-catch语句,而是声明抛出异常throws IOException。

12.2.5 标准输入输出流

一般地,标准输入设备是键盘,标准输出设备是终端显示器,标准错误输出设备也是显示器。在Java语言中,系统类System提供了访问标准输入输出设备的功能。System类是继承Object类的终极类,它有3个类变量in、out和err,分别表示标准输入流、标准输出流和标准错误输出流。它们在System类中的定义如下:

①标准输入流(System.in)是一个InputStream对象,具有InputStream类中定义的行为方法。由于InputStream本身是一个抽象类,所以标准输入流应该是InputStream的某个具体子类(实际上是BufferInputStream类)的实例。

②标准输出流(System.out)是PrintStream类的一个实例,具有PrintStream类中定义的行为方法。

③标准错误输出流(System.err)也是PrintStream类的一个实例,具有PrintStream类中定义的行为方法。

标准输入输出流由运行系统自动创建,即程序一旦运行,标准输入流与键盘相连接,标准输出流和标准错误输出流与显示器相连接。

这时,用户就可以使用InputStream类的read()和skip(long n)等方法来从输入流获得数据。read()从输入流中读一个字节,skip(long n)在输入流中跳过n个字节。

同样,这时,用户就可以使用PrintStream类的print()和println()等方法来输出数据,这两个方法支持Java的任意基本类型或对象作为参数。

【例12-4】 读写标准文件。将键盘输入的字符输出到屏幕上,并统计输入的字符数。

程序运行结果:

请输入:Hello Java

接收到:Hello Java

共输入了10个字符。

请输入:Hello Java语言

接收到:Hello Java????

共输入了14个字符。

分析与思考:①程序运行时,按回车键表示结束输入字符。

②System.in.read()可能产生IOException异常。因此,该语句要么在try-catch语句中,要么在包含该语句的方法上声明抛出异常throws IOException。

③System.in.read()方法将从键盘缓冲区中读入一个字节的数据,然而返回的却是int整型量,其中低8位是真正输入的数据,其余的位是0。不能读入字符(如汉字)。

④虽然标准错误输出流的用法与标准输出流完全相同,但是,在很多情况下将正确信息与错误信息的输出分开是非常有用的,有兴趣的读者可参考输入输出重定向的相关内容。

⑤当键盘缓冲区没有未被读取的数据时,执行System.in.read()语句,将导致系统进入

阻塞状态。这时当前流程停留在System.in.read()语句位置上,等待用户输入一个键盘数据后,才能继续运行下去。在程序中,可利用System.in.read()语句达到暂时保留屏幕的目的。如下所示:

⑥该输入流是字节流,不是字符流,不能进行字符编码的转换。因此,不能处理汉字。

改写例12-4,完成例12-4同样的功能。要求一是用#作为键盘输入字符的结束标志,二是不使用try-catch语句,而是声明抛出异常throws IOException。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈