初识IO流

IO流

I:input,输入

O:output,输出

  1. 什么是流:

    1. 流是一组有顺序,有起点和终点的字节结合,是对数据传输的总称或抽象。

  2. 分类:

    1. 按处理数据类型的不同,分为字节流和字符流

      • 字节流:压缩包、视频、图片等

      • 字符流:主要用来操作纯文本

    2. 按数据流向的不同,分为输入流和输出流(入和出是相对于内存的)

    3. 按功能不同,分为节点流和处理流

      • 节点流:直接操作数据源

      • 处理流:对其他流进行处理

  3. 抽象类定义

    分类字节流字符流
    输入流InputStreamReader
    输出流OutputStreamWriter

节点流

  1. InputStream 字节输入流

    ​
    //绝对路径:D:\a.txt
    //FileInputStream fileInputStream=new FileInputStream("D:/a.txt");
    //相对路径:./ 定位到当前项目
    //./src\com\tledu\process\day_21
    //read()方法:返回的是字符的ASCII码,返回-1代表读到了末尾
            FileInputStream fileInputStream=new FileInputStream("./src/com/tledu/process/day_20/Room.java");
            int read=0;
            while ((read=fileInputStream.read())!=-1){
                System.out.print((char) read);
            }
            fileInputStream.close();

  2. Reader 字符输入流

    //        处理纯文本
            try ( FileReader fileReader=new FileReader("./src/com/tledu/process/day_20/Room.java")){
                int read=0;
                while ((read=fileReader.read())!=-1){
                    System.out.print((char) read);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

  3. OutputStream 字节输出流

    1. 输出流可以自动创建文件,但不能创建文件夹

    2. 默认是覆盖,如果想追加,在构造方法第二个参数传true,默认是false

    //        输出流可以自动创建文件,但是不能帮你创建文件夹
    //        默认是覆盖,如果想追加,在构造方法第二个参数传true,默认是false就是覆盖
            try( FileOutputStream fileOutputStream=new FileOutputStream("D:/b.txt",false)) {
    //            fileOutputStream.write(97);
    //            fileOutputStream.write(98);
    //            fileOutputStream.write(99);
                String a="你好啊";
                byte[] bytes = a.getBytes();
                fileOutputStream.write(bytes);
            } catch (IOException e) {
                e.printStackTrace();
            }

  4. Writer 字符输出流

            try (FileWriter fileWriter=new FileWriter("./src/com/tledu/process/day_21/b.txt");){
                fileWriter.write(97);
                fileWriter.write("我很好");
                String a="十分感谢";
                fileWriter.write(a.toCharArray());
            } catch (IOException e) {
                e.printStackTrace();
            }

缓冲流

  1. 特点:

    1. 主要是为了提高效率而存在的,减少物理读取次数

    2. 提供readLine()、newLine()这样的便捷的方法(针对缓冲字符流)

    3. 在读取和写入时,会有缓存部分,调用flush为刷新缓存,将内存数据写入到磁盘

  2. 分类字节流字符流
    文件输入流BufferedInputStreamBufferedReader
    文件输出流BufferedOutputStreamBufferedWriter
  3. readLine()方法:一次性读取一行数据,当返回null时,说明读取到末尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值