Java System 系统类(I/O)


System 系统类

  • 在常用 API 中已经涉及到 System 类,详见:Java System 类
  • System 类对 I/O 给予了一定的支持;
  • java.lang.System,详见:Class System

1. System.in

  • 系统标准输入 System.in 是一个键盘输入流,是字节输入流 InputStream 类的对象;
  • Java 中用它来从键盘中读取数据;
import java.io.InputStream;

public class Test {
    public static void main(String[] args) throws Exception {
        InputStream input = System.in;
        //从键盘接收数据
        byte b[] = new byte[5];
        //开辟内存空间,用来接收数据
        System.out.print("请输入内容:");
        int len = input.read(b);
        System.out.println("您输入的内容为:" + new String(b, 0, len));
        input.close();
    }
}
/*
输出
请输入内容:aa
您输入的内容为:aa
 */
  • 实现了从键盘接受输入数据,但是需要指定数组的长度,如果不要指定,实现任意长度的数据输入,要用 BufferedReader 类来实现,详见:Java buffered stream 缓冲流

2. System.out

  • 系统标准输出 System.out 是字节打印流 PrintStream 类的对象;
  • 在 PrintStream 中定义了一些 print() 和 println() 方法,用来向显示器输出信息;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class Test {
    public static void main(String[] args) throws Exception {
        File f = new File("c:" + File.separator + "Users\\80626\\Desktop\\1.txt");
        Reader input = null;
        input = new FileReader(f);
        char c[] = new char[1024];
        int len = input.read(c);
        input.close();
        System.out.println("内容为:" + new String(c, 0, len));
    }
}
/*
输出
内容为:wqeqw
 */

3. System.err

  • System.err 用来实现错误信息的输出,如果程序出现错误,则可以直接用 System.err 输出错误信息;
public class Test {
    public static void main(String[] args) {
        String str = "hello";
        try {
            System.out.println(Integer.parseInt(str));
        } catch (Exception e) {
            System.out.println("System.err 的结果为:");
            System.err.println(e);
            System.out.println("printStackTrace() 的结果为:");
            e.printStackTrace();
            System.out.println("System.out 的结果为:");
            System.out.println(e);
        }
    }
}
/*
输出
System.err 的结果为:
java.lang.NumberFormatException: For input string: "hello"
printStackTrace() 的结果为:
java.lang.NumberFormatException: For input string: "hello"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
	at java.base/java.lang.Integer.parseInt(Integer.java:658)
	at java.base/java.lang.Integer.parseInt(Integer.java:776)
	at Test.main(Test.java:5)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
System.out 的结果为:
java.lang.NumberFormatException: For input string: "hello"
 */
  • 可见 System.err 实际输出与 System.out 一样,但是标记为与 printStackTrace() 一样的错误信息;
发布了242 篇原创文章 · 获赞 244 · 访问量 9606

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104744614