java学习日记 System类对IO的支持

1、System.out

使用OutputStream向屏幕输出。

import java.io.IOException;
import java.io.OutputStream;

public class SystemoutDemo1 {
    public static void main(String[] args) {
        OutputStream out = System.out;    //此时的输出流是向屏幕上输出
        try {
            out.write("hello world!!!".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

OutputStream的哪个子类为其实例化,就具备了向哪里输出的能力。如果使用了FileOutputStream则表示向文件输出,如果使用了System.out则表示向显示器输出,这里完全显示出了Java的多态性的好处,根据子类的不同完成的功能也不同。

2、System.err

System.err表示的是错误信息输出,如果程序出现错误,则可以直接使用System.err进行输出。

public class SystemerrDemo1 {
    public static void main(String[] args) {
        String str = "hello";
        try {
            System.out.println(Integer.parseInt(str));
        }catch (Exception e){
            System.err.println(e);
        }
    }
}

3、System.in

import java.io.InputStream;

public class SysteminDemo {
    public static void main(String[] args) throws Exception {
        InputStream input = System.in;
        StringBuffer buf = new StringBuffer();
        System.out.println("请输入内容:");
        int temp =0 ;
        while ((temp=input.read())!=-1){
            char c = (char) temp;
            if (c=='\n'){
                break;
            }
            buf.append(c);
        }
        System.out.println("输入的内容为:"+buf);
        input.close();
    }
}

如果输入中文会出现乱码。

4、BufferedReader类

键盘输入的标准格式:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BufferReaderDemo1 {
    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;
        System.out.println("请输入内容:");
        try {
            str=br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("输入的内容为:"+str);
    }
}

可以解决乱码问题。

5、Scanner类

import java.util.Scanner;

public class ScannerDemo1 {
    public static void main(String[] args) {
        boolean flag = true;
        System.out.println("请输入生日:");
        while (flag){
            Scanner scanner = new Scanner(System.in);//从键盘输入数据
            if (scanner.hasNext("\\d{4}-\\d{2}-\\d{2}")){
                String bir = scanner.next("\\d{4}-\\d{2}-\\d{2}");
                System.out.println("输入内容:"+bir);
                flag=false;
            }else {
                System.out.println("输入格式错误");
            }
        }
    }
}

scanner.userDelimiter  修改输入数据的分隔符

 

 Scanner 输出文档的内容:

public class ScannerDemo2 {
    public static void main(String[] args) {
        File file = new File("d:"+File.separator+"demo"+File.separator+"test.txt");
        Scanner scanner = null;
        try {
            scanner = new Scanner(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        StringBuffer sbf = new StringBuffer();
        while (scanner.hasNext()){
            sbf.append(scanner.next()).append("\n");
        }
        System.out.println(sbf);
    }
}

6、对象序列化

java中共有两个标识接口:克隆(Cloneable)和对象序列化(Serializable)。

 

posted @ 2020-07-02 14:28  橘子酱ing  阅读(189)  评论(0编辑  收藏  举报