System.in, System.out, System.err

参考:http://ifeve.com/java-io-system-in-system-out-system-err/

System.in, System.out, System.err这3个流同样是常见的数据来源和数据流目的地。 JVM启动的时候通过Java运行时初始化这3个流,所以你不需要初始化它们(尽管你可以在运行时替换掉它们)。

    /** Don't let anyone instantiate this class */
    private System() {
    }

    /**
     * The "standard" input stream. This stream is already
     * open and ready to supply input data. Typically this stream
     * corresponds to keyboard input or another input source specified by
     * the host environment or user.
     */
    public final static InputStream in = null;

    /**
     * The "standard" output stream. This stream is already
     * open and ready to accept output data. Typically this stream
     * corresponds to display output or another output destination
     * specified by the host environment or user.
     * 

    * For simple stand-alone Java applications, a typical way to write     * a line of output data is:     *


     *     System.out.println(data)
     * 
    *

    * See the println methods in class PrintStream.     *     * @see     java.io.PrintStream#println()     * @see     java.io.PrintStream#println(boolean)     * @see     java.io.PrintStream#println(char)     * @see     java.io.PrintStream#println(char[])     * @see     java.io.PrintStream#println(double)     * @see     java.io.PrintStream#println(float)     * @see     java.io.PrintStream#println(int)     * @see     java.io.PrintStream#println(long)     * @see     java.io.PrintStream#println(java.lang.Object)     * @see     java.io.PrintStream#println(java.lang.String)     */    public final static PrintStream out = null;    /**     * The "standard" error output stream. This stream is already     * open and ready to accept output data.     *

    * Typically this stream corresponds to display output or another     * output destination specified by the host environment or user. By     * convention, this output stream is used to display error messages     * or other information that should come to the immediate attention     * of a user even if the principal output stream, the value of the     * variable out, has been redirected to a file or other     * destination that is typically not continuously monitored.     */    public final static PrintStream err = null;

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输出到控制台上。

例子:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;

public class TestSystemInOutErr {

    public static void main(String[] args) {
        OutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\132.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //字节流转为字符流
        PrintStream printStream = new PrintStream(outputStream);
        System.setOut(printStream);
        //此时将输出输出到了文件中
        System.out.println("我们都是好孩子1");
    }
}

你可能感兴趣的:(java,io,学习)