System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。1、成员变量in、out、err System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
例如: charc=System.in.read();//由键盘读入一个字节的数据送给字符变量c;
System.out.println("Hello! Guys,");//由屏幕输出一个字符串。
其实out, in 和 err是它的静态属性:
- public final static InputStream in = nullInputStream();
- public final static PrintStream out = nullPrintStream();
- public final static PrintStream err = nullPrintStream();
复制代码
2、System类的标准输入(in),输出(out)和错误流(err)使用的例子:
- package jdk.lang;
- <font size="4"> </font>public class SystemIOE {
- public static void main(String[] args) throws Exception {
- System.out.println("Hello Out");
- System.err.println("Hello Error");
- int count = System.in.read(b);
- System.out.println(new String(b, 0, count));
- }
- }
复制代码
如果在Eclipse上运行输出: Hello Out Hello Error Hello In Hello In JVM启动的时候通过Java运行时初始化这3个流,所以你不需要初始化它们(尽管你可以在运行时替换掉它们)。 System.in System.in是一个典型的连接控制台程序和键盘输入的InputStream流。通常当数据通过命令行参数或者配置文件传递给命令行Java程序的时候,System.in并不是很常用。图形界面程序通过界面传递参数给程序,这是一块单独的Java IO输入机制。 System.out System.out是一个PrintStream流。System.out一般会把你写到其中的数据输出到控制台上。System.out通常仅用在类似命令行工具的控制台程序上。System.out也经常用于打印程序的调试信息(尽管它可能并不是获取程序调试信息的最佳方式)。 System.err System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文 本。一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。 System.out和System.err的简单例子: 这是一个System.out和System.err结合使用的简单示例: - try {
- InputStream input = new FileInputStream("c:\\data\\...");
- System.out.println("File opened...");
- } catch (IOException e) {
- System.err.println("File opening failed:");
- e.printStackTrace()
- }
复制代码
替换系统流 尽管System.in, System.out, System.err这3个流是java.lang.System类中的静态成员(译者注:这 3个变量均为final static常量),并且已经预先在JVM启动的时候初始化完成,你依然可以更改它们。只需要把一个新的InputStream 设置给System.in或者一个新的OutputStream设置给System.out或者System.err,之后的数据都将会在新的流中进行读 取、写入。 可以使用System.setIn(), System.setOut(), System.setErr()方法设置新的系统流(译者注:这三个方法均为静态方法,内部调用了本地native方法重新设置系统流)。例子如下: - OutputStream output = new FileOutputStream("c:\\data\\system.out.txt");
- PrintStream printOut = new PrintStream(output);
- System.setOut(printOut);
复制代码现在所有的System.out都将重定向到”c:\\data\\system.out.txt”文件中。请记住,务必在JVM关闭之前冲刷System.out(译者注:调用flush()),确保System.out把数据输出到了文件中。
|