Day 10 2021.3.11-.3.12 递归-过滤器-IO流-缓冲流

Day 10 2021.3.11-3.12

递归

概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQr5Mtb8-1615530497688)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311125443070.png)]

package com.hong.Day010.Demo01;
/*
    递归:方法自己调用自己
    - 递归的分类:
      - 递归分为两种:直接递归和间接递归
      - 直接递归称为方法自己调用自己
      - 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
    - 注意事项:
      - 递归一点要有条件限定,保证递归能够停止下来,否则会发生栈溢出
      - 在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈溢出
      - 构造方法,禁止递归
*/
public class Demo01 {
    public static void main(String[] args) {
        //a();
        b(1);
    }

    private static void b(int i) {
        System.out.println(i);
        if (i == 20000){
            return;//结束方法
        }
        b(i++);
        //在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈溢出
    }

    private static void a(){
        System.out.println("a方法");
        a();
        //递归一点要有条件限定,保证递归能够停止下来,否则会发生栈溢出
    }
}

练习_使用递归计算1n之间的和

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fUHJvxVx-1615530497690)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311135415323.png)]

package com.hong.Day010.Demo01;
/*
    计算1n之间的和
*/
public class Demo02 {
    public static void main(String[] args) {
        int a = add(2,100);
        System.out.println(a);
    }

    //累加
    public static int add(int i,int n){
        int result = 0;
        if (i==n){
            return result+i;
        }
        result = i + add(i+1,n);
        return result;
    }
}

练习_使用递归计算阶乘

package com.hong.Day010.Demo01;
/*
    计算1n的阶乘
*/
public class Demo02 {
    public static void main(String[] args) {
        int a = add(3,5);
        System.out.println(a);
    }

    //累加
    public static int add(int i,int n){
        int result = 1;
        if (i==n){
            return result*i;
        }
        result = i * add(i+1,n);
        return result;
    }
}

练习_使用递归打印多级目录

//File[] Files = dir.listFiles 用来存储文件目录的表格
//getAllFile()  获得全部文件目录
//endsWith()   判断文件结尾是什么
//getName()    获得文件名字
//getPath()    获得文件目录
//toLowerCase() 忽略大小写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uaSqYmep-1615530497694)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311140253127.png)]

综合案例_文件搜索

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YikLntXh-1615530497696)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311140613528.png)]

FileFilter和FilenameFilter过滤器的原理和使用

/*
    public interface FileFilter 抽象路径名的过滤器。
    boolean    accept(File pathname)
    测试指定的抽象路径名是否应包含在路径名列表中。
        参数:
            File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象

    public interface FilenameFilter 用于实现此接口的类的实例用于过滤文件名。
    boolean    accept(File dir, String name)
    测试指定文件是否应包含在文件列表中。
    
    两个过滤器接口是没有实现类的,需要重写实现类自己定义规则
*/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NiOWTvqm-1615530497697)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311142116571.png)]

判断方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cggUwkfc-1615530497699)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311142227122.png)]

使用匿名内部类表达:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wbfsBPJS-1615530497701)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210311142530255.png)]

IO流(字节流)

输入流输出流
字节流字节输入流 InputStream字节输出流 OutputStream
字符流字符输入流 Reader字符输出流 Writer

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g69jbwpH-1615530497701)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312083847507.png)]

字节输出流(OutputStream)

OutputStream类

/*
    java.io.OutputStream:字节输出流
    这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。
常用方法:
    1.void close() 关闭此输出流并释放与此流相关联的任何系统资源。
    2.void flush() 刷新此输出流并强制任何缓冲的输出字节被写出。
    3.void write(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。
    4.void write(byte[] b, int off, int len)从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
    5.abstract void    write(int b) 将指定的字节写入此输出流。
*/

FileOutputStream类

字节写入与获取字节

package com.hong.Day010.Demo02;

import java.io.FileOutputStream;
import java.io.IOException;

/*
    java.io.OutputStream:字节输出流
    这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。
常用方法:
    1.void close() 关闭此输出流并释放与此流相关联的任何系统资源。
    2.void flush() 刷新此输出流并强制任何缓冲的输出字节被写出。
    3.void write(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。
    4.void write(byte[] b, int off, int len)从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
    5.abstract void    write(int b) 将指定的字节写入此输出流。

    java.io.FileOutputStream
    文件输出流是用于将数据写入到输出流File或一个FileDescriptor
    FileOutputStream:文件字节输出流
    作用:把内存中的数据写入文件中

    构造方法:
        1.FileOutputStream(File file) 创建文件输出流以写入由指定的 File对象表示的文件。
        2.FileOutputStream(String name) 创建文件输出流以指定的名称写入文件。
        参数:写入数据的目的地
            String name:目的地是一个文件的路径
            File file:目的地是一个文件
        构造方法的作用:
            1.创建一个FileOutputStream对象
            2.会根据构造方法中传递的文件/文件路径,创建一个空的文件
            3.会把FileOutputStream对象指向创建好的文件
    写入数据的原理(内存-->硬盘)
        java程序-->JVM(java虚拟机)-->os(操作系统)-->os调用写数据的方法-->把数据写入到文件中
    字节输出流的使用步骤(重点):
        1.创建一个FileOutputStream对象,构造方法中写入数据的目的地
        2.使用FileOutputStream对象中的方法write,把数据写入到文件中
        3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空m提高程序的效率)
*/
public class Demo01 {
    public static void main(String[] args) throws IOException {
        //1.创建一个FileOutputStream对象,构造方法中写入数据的目的地
        FileOutputStream fos = new FileOutputStream("E:\\javaIO\\a.txt");
        //2.使用FileOutputStream对象中的方法write,把数据写入到文件中
        fos.write(98);//b   一次写了一个字节
        fos.write(49);//100  需要3个字节
        fos.write(48);
        fos.write(48);

        /*
            void write(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。
            一次写多个字节:
                    如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
                    如果写的第一个字节是负数,那么第一个字节和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK,简体中文)
        */
        byte[] bytes = {65,66,67,68,69};
        fos.write(bytes);//ABCDE

        byte[] bytes1 = {-65,-66,-67,68,69};
        fos.write(bytes1);//烤紻E

        /*
            void write(byte[] b, int off, int len)从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
            把字节数组的一部分写入到文件中
            int off:数组的开始索引
            int len:写几个字节
        */
        fos.write(bytes,1,2);//BC

        /*
            写入字节的方法:
                    String类中有getBytes()方法:
                    把字符串转换为字节数组
        */
        byte[] bytes2 = "你好".getBytes();
        fos.write(bytes2);
        //3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空m提高程序的效率)
        fos.close();
    }
}

续写与换行

package com.hong.Day010.Demo02;

import java.io.FileOutputStream;
import java.io.IOException;

/*
    追加写/续写:使用两个参数的构造方法
    FileOutputStream(String name, boolean append)创建文件输出流以指定的名称写入文件
    FileOutputStream(File file, boolean append)创建文件输出流以写入由指定的 File对象表示的文件
        参数:
            String name,File file:写入数据的目的地
            boolean append :追加开关
              true:创建对象不会覆盖源文件,继续在文件的末尾追加 写数据
              false:创建一个新文件,覆盖源文件
        写换行:写换行符号
            windows:\r\n
            linux:/n
            mac:/r
*/
public class Demo02 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("E:\\javaIO\\b.txt",true);
        for (int i = 0; i < 10; i++) {
            fos.write("你好".getBytes());
            fos.write("\r\n".getBytes());
        }

        fos.close();
    }
}

字节输入流(InputStream)

/*
    java.io.InputStream:字节输出流
    这个抽象类是表示输入字节流的所有类的超类。需要定义InputStream子类的应用InputStream必须始终提供一种返回输入的下一个字节的方法
常用方法:
    1.void close() 关闭此输入流并释放与流相关联的任何系统资源。
    2.abstract int read() 从输入流读取数据的下一个字节。
    3.int read(byte[] b) 从输入流读取一些字节数,并将它们存储到缓冲区 b 。
    4.int read(byte[] b, int off, int len) 从输入流读取最多 len字节的数据到一个字节数组。
    5.void reset() 将此流重新定位到上次在此输入流上调用 mark方法时的位置。
    6.void mark(int readlimit) 标记此输入流中的当前位置。
*/

FileInputStream

package com.hong.Day010.Demo02;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

/*
    java.io.InputStream:字节输入流
    这个抽象类是表示输入字节流的所有类的超类。需要定义InputStream子类的应用InputStream必须始终提供一种返回输入的下一个字节的方法
常用方法:
    1.void close() 关闭此输入流并释放与流相关联的任何系统资源。
    2.abstract int read() 从输入流读取数据的下一个字节。
    3.int read(byte[] b) 从输入流读取一些字节数,并将它们存储到缓冲区 b 。
    4.int read(byte[] b, int off, int len) 从输入流读取最多 len字节的数据到一个字节数组。
    5.void reset() 将此流重新定位到上次在此输入流上调用 mark方法时的位置。
    6.void mark(int readlimit) 标记此输入流中的当前位置。

    java.io.FileInputStream extends InputStream :文件字节输入流
    FileInputStream用于读取诸如图像数据的原始字节流
    作用:把硬盘文件中的数据读取到内存中使用
构造方法:
    1.FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
    2.FileInputStream(FileDescriptor fdObj) 创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的现有连接到一个实际的文件。
    3.FileInputStream(String name) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
    参数:读取文件的输入源
        String name :文件的路径,File file:文件
    构造方法的作用:
        1.会创建一个FileInputStream对象
        2.会把FileInputStream对象指定构造方法中要读取的文件
读取数据的原理(硬盘-->内存)
    java程序-->JVM-->OS-->OS读取数据的方法-->读取文件
字节输入流的使用步骤(重点):
    1.创建FileInputStream对象,构造方法中指定要读取的文件的数据源
    2.使用FileInputStream对象中的方法read,读取文件
    3.释放资源

*/
public class Demo03 {
    public static void main(String[] args) throws IOException {
        //1.创建FileInputStream对象,构造方法中指定要读取的文件的数据源
        FileInputStream fis = new FileInputStream("E:\\javaIO\\a.txt");
        //2.使用FileInputStream对象中的方法read,读取文件
        //int read()读取文件中的一个字节并返回,读取到文件的末尾返回-1
/*        System.out.println((char) fis.read());//(a)(97)  可以用循环(while)
        System.out.println(fis.read());//-1  读取到结尾*/
        int len = 0;//记录到读取的字节
        while ((len = fis.read())!= -1){
            System.out.print((char) len);//abc
        }

        //int read(byte[] b) 一次读取多个字节
        byte[] bytes = new byte[2];
        int len1 = fis.read(bytes);
        System.out.println(len1);//2(每次读取的字符个数)【一般定义1024或1024的整数倍】
        System.out.println(Arrays.toString(bytes));//[97,98]
        System.out.println(new String(bytes,0,len1));//ab
        //【可以用while循环】
        //3.释放资源
        fis.close();
    }
}

文件存储和记事本打开的原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSBOljmV-1615530497702)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312090355547.png)]

练习:文件复制

package com.hong.Day010.Demo02;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
    文件复制练习:一读一写
    步骤:
        1.创建一个字节输入流对象,构造方法中绑定要读取的数据源
        2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
        3.使用字节输入流对象中的方法read读取文件
        4.使用字节输出流中的方法write,把读取到的字节写入到目的地文件中
        5.释放资源
*/
public class Demo04 {
    public static void main(String[] args) throws IOException {
        long s = System.currentTimeMillis();
        FileInputStream fis = new FileInputStream("E:\\javaIO\\123.jpg");
        FileOutputStream fos = new FileOutputStream("E:\\javaIO\\12345.jpg");
/*        //一次读取一个一次写一个
        int len = 0;
        while ((len = fis.read())!= -1){
            fos.write(len);
        }*/

        //使用数组缓冲地区多个字节,写入多个字节
        byte[] bytes = new byte[1024];
        int len1 = 0;
        while ((len1 = fis.read(bytes))!= -1){
            fos.write(bytes,0,len1);
        }
        //5.释放资源(先关闭写的,后关闭读的)
        fos.close();
        fis.close();
        long e = System.currentTimeMillis();
        System.out.println(e-s);
    }
}

IO流(字符流)

字符输入流(Reader)

package com.hong.Day010.Demo03;

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

/*
    字符输入流:java.io.Reader
    用于读取字符流的抽象类。 子类必须实现的唯一方法是read(char [],int,int)和close()。 然而,大多数子类将覆盖这里定义的一些方法,以便提供更高的效率,附加的功能或两者。
构造方法
    1.protected    Reader()创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。
    2.protected    Reader(Object lock)创建一个新的字符流阅读器,其关键部分将在给定对象上同步。
常用方法:
    1.abstract void    close()关闭流并释放与之相关联的任何系统资源。
    2.int read()读一个字符
    3.int read(char[] cbuf)将字符读入数组。
注意:
    1.使用字节流读取中文文件时,1个中文:
        GBK:占用两个字节
        UTF-8:占用三个字节
*/

FileReader类

package com.hong.Day010.Demo03;

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

/*
    字符输入流:java.io.Reader
    用于读取字符流的抽象类。 子类必须实现的唯一方法是read(char [],int,int)和close()。 然而,大多数子类将覆盖这里定义的一些方法,以便提供更高的效率,附加的功能或两者。
构造方法
    1.protected    Reader()创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。
    2.protected    Reader(Object lock)创建一个新的字符流阅读器,其关键部分将在给定对象上同步。
常用方法:
    1.abstract void    close()关闭流并释放与之相关联的任何系统资源。
    2.int read()读一个字符
    3.int read(char[] cbuf)将字符读入数组。
注意:
    1.使用字节流读取中文文件时,1个中文:
        GBK:占用两个字节
        UTF-8:占用三个字节
    文件字符输入流:java.io.FileReader
    作用:把硬盘文件以字符的方式读取
构造方法:
    1.FileReader(File file)创建一个新的 FileReader ,给出 File读取。
    2.FileReader(FileDescriptor fd)创建一个新的 FileReader ,给定 FileDescriptor读取。
    3.FileReader(String fileName)创建一个新的 FileReader ,给定要读取的文件的名称。
    参数:file:文件     fileName:文件路径
字符输入流使用步骤:
    1.创建FileReader对象,构造方法中绑定要读取的数据源
    2.使用FileReader对象中的方法read读取文件
    3.释放资源
*/
public class Demo01 {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("E:\\javaIO\\b.txt");
        //int read()读一个字符
        int len = 0;
        while ((len = fr.read())!= -1){
            System.out.print((char)len);
        }
        //int read(char[] cbuf)将字符读入数组
        char[] chars = new char[1024];
        int len1 = 0;
        while ((len1 = fr.read(chars))!= -1){
            System.out.print(new String(chars,0,len1));
        }
        fr.close();
    }
}

字符输出流(Writer)

package com.hong.Day010.Demo03;
/*
    字符输出流:java.io.Writer
    用于写入字符流的抽象类
构造方法:
    1.protected    Writer()创建一个新的人物流作家,其关键部分将在作者本身上同步。
    2.protected    Writer(Object lock)创建一个新的字符流写入器,其关键部分将在给定对象上进行同步。
常用方法:
    1.void write(char[] cbuf)写入一个字符数组。
    2.abstract void    write(char[] cbuf, int off, int len)写入字符数组的一部分。
    3.void write(int c)写一个字符
    4.void write(String str)写一个字符串
    5.void write(String str, int off, int len)写一个字符串的一部分。
    6.abstract void    close()关闭流,先刷新。
    7.abstract void    flush()刷新流。
*/

FileWriter类

package com.hong.Day010.Demo03;

import java.io.FileWriter;
import java.io.IOException;

/*
    字符输出流:java.io.Writer
    用于写入字符流的抽象类
构造方法:
    1.protected    Writer()创建一个新的人物流作家,其关键部分将在作者本身上同步。
    2.protected    Writer(Object lock)创建一个新的字符流写入器,其关键部分将在给定对象上进行同步。
常用方法:
    1.void write(char[] cbuf)写入一个字符数组。
    2.abstract void    write(char[] cbuf, int off, int len)写入字符数组的一部分。
    3.void write(int c)写一个字符
    4.void write(String str)写一个字符串
    5.void write(String str, int off, int len)写一个字符串的一部分。
    6.abstract void    close()关闭流,先刷新。
    7.abstract void    flush()刷新流。

    文件字符输出流:java.io.FileWriter
    方便课写字符文件
    作用:把内存中的字符写入到文件中
构造方法:
    1.FileWriter(File file)给一个File对象构造一个FileWriter对象。
    2.FileWriter(File file, boolean append)给一个File对象构造一个FileWriter对象。
    3.FileWriter(FileDescriptor fd)构造与文件描述符关联的FileWriter对象。
    4.FileWriter(String fileName)构造一个给定文件名的FileWriter对象。
    5.FileWriter(String fileName, boolean append)构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。
字符输出流使用步骤:
    1.创建FileWriter对象,构造方法中绑定要写入的数据源
    2.使用FileWriter对象中的方法write,把数据写入到内存缓冲区
    3.使用FileWriter对象中的方法flush,把内存缓冲区中的数据刷新到文件中
    4.释放资源
*/
public class Demo02 {
    public static void main(String[] args) throws IOException {
        //1.创建FileWriter对象,构造方法中绑定要写入的数据源
        FileWriter fw = new FileWriter("E:\\javaIO\\c.txt");
        //2.使用FileWriter对象中的方法write,把数据写入到内存缓冲区
        fw.write("a");
        //3.使用FileWriter对象中的方法flush,把内存缓冲区中的数据刷新到文件中
        fw.flush();
        //4.释放资源
        fw.close();
    }
}

flush与close 的区别

//flush()  :刷新后可以继续使用
//close()  :先刷新后关闭,关闭之后不可继续使用

续写与换行

/*
    追加写/续写:使用两个参数的构造方法
    FileWriter(String name, boolean append)创建文件输出流以指定的名称写入文件
    FileWriter(File file, boolean append)创建文件输出流以写入由指定的 File对象表示的文件
        参数:
            String name,File file:写入数据的目的地
            boolean append :追加开关
              true:创建对象不会覆盖源文件,继续在文件的末尾追加 写数据
              false:创建一个新文件,覆盖源文件
        写换行:写换行符号
            windows:\r\n
            linux:/n
            mac:/r
*/

Properties集合

/*
    java.util.Properties
    Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。
构造方法:
    1.Properties()创建一个没有默认值的空属性列表。
    2.Properties(Properties defaults)创建具有指定默认值的空属性列表。
常用方法:
    1.String getProperty(String key)使用此属性列表中指定的键搜索属性。
    2.String getProperty(String key, String defaultValue)使用此属性列表中指定的键搜索属性。
    3.Object setProperty(String key, String value)致电 Hashtable方法 put 。
    4.Set<String> stringPropertyNames()返回此属性列表中的一组键,其中键及其对应的值为字符串,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。
    5.void list(PrintStream out)将此属性列表打印到指定的输出流。
    6.void list(PrintWriter out)将此属性列表打印到指定的输出流。
    7.void load(InputStream inStream)从输入字节流读取属性列表(键和元素对)。
    8.void load(Reader reader)以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。
    9.void store(OutputStream out, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法加载到 Properties表中的格式输出流。
    10.void	store(Writer writer, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式输出到输出字符流。
*/

store存储Properties集合表的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vnwTYLb-1615530497703)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312134313453.png)]

load加载文件中的数据到Properties集合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWf7IC0c-1615530497703)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312134703560.png)]

缓冲流

原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M2NXW6ct-1615530497703)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312135147743.png)]

输入流输出流
字节缓冲流BufferedInputStreamBufferedOutputStream
字符缓冲流BufferedReaderBufferedWriter
/*
构造方法:
    1.BufferedInputStream(InputStream in, int size)创建 BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用。
    2.BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。
    3.BufferedReader(Reader in, int sz)创建使用指定大小的输入缓冲区的缓冲字符输入流。
    4.BufferedWriter(Writer out, int sz)创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
*/

BufferedOutputStream

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1whDSsLA-1615530497705)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312140001770.png)]

BufferedOutputStream

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQSd87oi-1615530497705)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312140347346.png)]

练习:文件复制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-omwAXYKd-1615530497706)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312140807598.png)]

BufferedWriter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7dqYol2-1615530497706)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312141215681.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZWIKOuri-1615530497707)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312141301138.png)]

BufferedReader

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5D2o0cc7-1615530497707)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312141640767.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xt9lyU3L-1615530497708)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312141708303.png)]

练习:文本排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-df8M31tb-1615530497709)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312142127853.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYyzNIwZ-1615530497710)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312142331942.png)]

数据写入指定的底层输出流。
3.BufferedReader(Reader in, int sz)创建使用指定大小的输入缓冲区的缓冲字符输入流。
4.BufferedWriter(Writer out, int sz)创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
*/


## BufferedOutputStream

[外链图片转存中...(img-1whDSsLA-1615530497705)]

## BufferedOutputStream

[外链图片转存中...(img-rQSd87oi-1615530497705)]

## 练习:文件复制

[外链图片转存中...(img-omwAXYKd-1615530497706)]

## BufferedWriter

[外链图片转存中...(img-p7dqYol2-1615530497706)]

[外链图片转存中...(img-ZWIKOuri-1615530497707)]

## BufferedReader

[外链图片转存中...(img-5D2o0cc7-1615530497707)]

[外链图片转存中...(img-Xt9lyU3L-1615530497708)]

## 练习:文本排序

[外链图片转存中...(img-df8M31tb-1615530497709)]

[外链图片转存中...(img-fYyzNIwZ-1615530497710)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNVlrE4l-1615530497710)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210312142408892.png)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值