ITEEDU

入门准备

接触对象

对象导向

资源管理

对象容器(Container)

输入输出(I/O)

执行绪(Thread)

反射(Reflection)

metadata

数据库(JDBC)

舍遗补缺

Java Gossip: 标准输入输出串流

在之前的HelloWorld程序中,您使用了System类别中的静态对象out,它提供标准输出串流(Stream),会在程序开始执行之后自动开启 并准备接受指定的资料,它通常对应至显示输出(Console、终端机输出)或其它的输出目的地,它可以被重新导向至一个档案,您可以在执行程序时使用 '>>'将输出结果导向至指定的档案,例如:

 java HelloWorld >> output.txt

上面的执行会将结果导向至output.txt,而不会在屏幕上显示"Hello! World!",output.txt中将会有输出结果"Hello! World"!。

除了标准输出串流out之外,Java程序在执行之后,还会开启标准输入串流in与标准错误输出串流err,下面先说明标准输入串流in。

标准输入串流in也是用System类别所提供的静态对象,在程序开 始之后它会自动开启,对应至键盘或其它的输入来源,准备接受使用者或其它来源的输入,您可以使用read()方法来读取输入,不过通常很少直接使用它,而 会使用一个Scanner对象为输入串流作后处理,方法在 取得使用者输入 简介过了。

标准错误输出串流err也是在程序执行后自动开启,它会将指定的字符串 输出至显示装置或其它指定的装置,与标准输出串流out不同的是,它会立即显示指定的(错误)讯息给使用者知道,例如即使您指定程序将结果重新导向至文件 案,err输出串流的讯息并不会被重新导向,而仍会显示在指定的显示装置上,下面这个例子给您一个简单的测试方式:

HelloWorld.java
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello! World!");
		System.err.println("Error Message Test");
	}
}

在编译程序之后,请如下执行程序,您会发现输出结果如下:

java HelloWorld  >> output.txt 
Error Message  Test

开启output.txt之后,您会发现当中只有"Hello! World!"讯息,而Error Message Test讯息并没有被导向至档案中,而是直接显示在Console(或终端机)中。

要 重新导向标准输出是用 '>', 标准输入则是 '<',而 '>>' 除了重导标准输出之外,还有附加的功能,也就是会把输出附加到被导向的目标档案后头,如果目标档案本来不存在,那么效果就和 '>' 一样。