• java的io流详解


    1,I/O流分类

    从内存里读叫做输入流:inputStream
    将内容写入到指定目录里叫做输出流:outputStream

    2,java IO流四大抽象类

    java.io.InputStream 字节输入流
    java.io.OutputStream 字节输出流
    java.io.Reader 字符输入
    java.io.Writer 字符输出流

    在java中只要"类名"以Stream结尾的都是字节流。以"Reader/Writer"结尾的都是字符流 。

    3, BufferedReader

    BufferedReader 是一个缓冲字符输入流,该流可以对 FileRead 进行包装,提供一个缓存数组,一次将数据按照一定规则读取到缓存区中,输入流每次读取文件数据时都需要将数据进行字符编码,而 BufferedReader 的出现,降低了输入流访问数据源的次数,将一定大小的数据一次读取到缓存区并进行字符编码,从而提高 IO 的效率。
    BufferedReader 从字符输入流中读取文本,缓冲字符,以便有效地读取字符、数组和行。可以指定缓冲区大小,也可以使用默认大小(8192)。对于大多数用途,默认值足够大。
    一般来说,对Reader发出的每个读请求都会导致对底层字符或字节流发出相应的读请求。因此,建议将 BufferedReader 封装在任何 read() 操作可能代价高昂的 Reader(如FileReaders和InputStreamReaders ) 周围。
    例如:

    BufferedReader in = new BufferedReader(new FileReader("foo.in"));
    
    • 1

    4,常用的代码

    1,读取文件、将文件写入到另一个文件里
    //1,读取文件、将文件写入到另一个文件里
               FileInputStream fis = new FileInputStream("/home/jing/1.txt");
               FileOutputStream fisR = new FileOutputStream("/home/jing/2.txt",false);
               byte[] b = new byte[1024];
               int len = 0;
                while((len = fis.read(b)) != -1){
                    fisR.write(b,0,len);
                    fis.close();
                }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    2,BufferedReader读取字符流
    //2,BufferedReader读取字符流
                FileReader fileReader = new FileReader("/home/jing/1.txt");
                BufferedReader br = new BufferedReader(fileReader);
                String str = "";
                while((str = br.readLine()) != null){
                    System.out.println(str);
                }
                br.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3,BufferedReader读取字符流, InputStreamReader将字节流转化为字符流
    //3,BufferedReader读取字符流 InputStreamReader将字节流转化为字符流
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("/home/jing/1.txt")));
                String str = "";
                while((str = br.readLine()) != null){
                    System.out.println(str);
                }
                br.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    如何不编写 YAML 管理 Kubernetes 应用?
    ROS 2知识:通信协议 DDS/RTPS
    9月28日复习
    vim——“Linux”
    正则表达式
    Stimulsoft ReportsJS and DashboardsJS. 2022.3.3
    java操作gaussDB数据库
    Pytorch学习笔记9——AutoEncoder
    基于ARM+FPGA+AD的多通道精密数据采集仪方案
    不生成DOM的非主流Blazor UI开源啦!
  • 原文地址:https://blog.csdn.net/qq_36189997/article/details/133075481