1.字节流
字节流是处理字节数据的流,它主要用于处理二进制数据,如图片、音频、视频等。Java中的字节流主要包括InputStream和OutputStream两个抽象类,以及它们的各种实现类,如FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream等。
字节流的操作单位是字节,适用于处理所有类型的文件,包括文本文件(按字节读取或写入文本内容)和二进制文件(如图片、视频等)。
字节流读取文件:
Thread t1 = new Thread(() -> {
                try {
                    System.out.println(Thread.currentThread().getName());
                    BufferedInputStream bufferedInputStream = new BufferedInputStream(
                            new FileInputStream("/home/Code/Java/Test/file1.txt"), 1024);
                    byte[] bytes = new byte[1024];
                    int len = bufferedInputStream.read(bytes);
                    System.out.println(bytes.toString());
                } catch (IOException ioException) {
                    System.out.println(ioException);
                }finally{
                    bufferedInputStream.close();
                }
            });2.字符流
字符流是处理字符数据的流,它主要用于处理文本数据。Java中的字符流主要包括Reader和Writer两个抽象类,以及它们的各种实现类,如FileReader、FileWriter、BufferedReader、BufferedWriter等。
字符流的操作单位是字符,因此它更适合处理文本文件。使用字符流处理文本文件时,可以自动处理文件的编码问题,使得程序更加健壮。
Thread t2 = new Thread(() -> {
                try {
                    System.out.println(Thread.currentThread().getName());
                    FileReader fr = new FileReader("/home/Code/Java/Test/input.txt");
                    BufferedReader br=new BufferedReader(fr);
                    String chs=br.readLine();
                    System.out.println(chs);
                } catch (Exception e) {
                    System.out.println(e);
                }finally{
                    br.close();
                    fr.close();
                }
            });处理的是文本数据,并且希望自动处理编码问题,那么应该选择字符流。处理的是二进制数据,或者需要对数据的每一位进行精确控制,那么应该选择字节流。
3.读取控制台输入
3.1 Scanner
Scanner 是 Java 中的一个实用类,它位于 java.util 包中,用于简化基本类型和字符串的输入。Scanner 类可以解析基本类型和字符串,通过使用正则表达式分隔输入数据。
要使用 Scanner,你需要首先创建它的一个实例,通常与某种输入源(如键盘输入、文件等)相关联。最常见的用法是与 System.in 关联,以从键盘读取输入。
import java.util.Scanner;  
public class ScannerExample {  
    public static void main(String[] args) {  
        // 创建一个 Scanner 对象,与 System.in 关联  
        Scanner scanner = new Scanner(System.in);  
        // 读取一个整数  
        System.out.print("请输入一个整数: ");  
        int number = scanner.nextInt();  
        System.out.println("你输入的整数是: " + number);  
        // 读取一个浮点数  
        System.out.print("请输入一个浮点数: ");  
        double doubleNumber = scanner.nextDouble();  
        System.out.println("你输入的浮点数是: " + doubleNumber);  
        // 读取一个字符串  
        System.out.print("请输入一个字符串: ");  
        String text = scanner.next();  
        System.out.println("你输入的字符串是: " + text);  
        // 读取一行文本(包含空格)  
        System.out.print("请输入一行文本: ");  
        String line = scanner.nextLine();  
        System.out.println("你输入的一行文本是: " + line);  
        // 关闭 Scanner 对象  
        scanner.close();  
    }  
}3.2 输入流缓存
InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);
            String input = br.readLine();
            String[] pars=input.split(" ");
            ArrayList<Integer> als=new ArrayList<>();
            for(String par : pars){
            als.add(Integer.parseInt(par));
            }

