Java学习笔记——IO流

输入流:数据从数据源(文件)到程序(内存)的路径。
输出流:数据从程序(内存)到数据源(文件)的路径。

FileReader 和 FileWriter

  • 字符流,读取文件内容(字节流是FileInputStream,FileOutputStream)
package file;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Reader01 {
    public static void main(String[] args) throws IOException {
        String filePath = "e:\\hello.txt";
        FileReader fileReader = null;
        int readLen = 0;
        char[] buf = new char[8];  //一次读8个
        try {
            fileReader = new FileReader(filePath);
            //循环读取,返回实际读取到的字符数,如果返回-1,代表文件结束
            while((readLen = fileReader.read(buf))!= -1){
                System.out.print(new String(buf,0,readLen));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            fileReader.close();
        }

    }
    //  fileReader.write()可以写入
}

节点流和处理流

  • 节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter。
  • 处理流(包装流)是连接已存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,如BufferedReader、BufferedWriter。
    处理流功能:
    1.性能的提高,主要以增加缓冲的方式来提高输入输出效率。
    2.操作的便捷,处理流提供方法一次输入输出大量的数据。

区别和联系:

  • 节点流是底层流,直接和数据源相接。

  • 处理流包装节点流,可以消除不同节点流的实现差异,提供跟方便的方法来完成输入输出。使用了修饰器设计模式,不会直接与数据源相连。

BufferedReader 和 BufferedWriter

public class bufferReader01 {
    public static void main(String[] args) throws IOException {
        String filePath = "e:\\hello.txt";
        BufferedReader bufferedReader = null;
        String line;
        bufferedReader = new BufferedReader(new FileReader(filePath));
        while((line = bufferedReader.readLine())!= null){
            System.out.println(line);
        }
        bufferedReader.close();


    }
}
public class bufferWriter01 {
    public static void main(String[] args) throws IOException {
        String filePath = "e:\\e.txt";
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));
        bufferedWriter.write("hello,world1");
        bufferedWriter.newLine();   //换行
        bufferedWriter.write("hello,world2");
        bufferedWriter.close();
    }
}
上一篇:js系列-File 对象,FileList 对象,FileReader 对象


下一篇:VUE+ElementUI+springboot Base64格式的文件上传