流的分类
    1.按照方向分类:输入流 输出流
    2.按照操作的单位分类:字节流(复制图片,文本) 字符流(复制文本)
    3.组合情况:
    NO.1字节输入流 字节输出流
    NO.2字符输入流 字符输出流
    字节输入流 InputStream
    1.抽象父级:InputStream–不能实例化
    2.普通子级:
    1)FileInputStream–操作文件的字节输入流
    构造方法参数:File file / String pathname
    2)BufferedInputStream–高效字节输入流
    构造方法参数:InputStream,但无法创建抽象父级对象,所以传的是FileInputStream

    字节输出流 OutputStream
    1.抽象父级:OutputStream–不能实例化
    2.普通子级:
    1)FileOutputStream–操作文件的字节输出流
    构造方法参数:File file / String pathname
    注意:默认存在一个参数boolean append,默认值为false,也就是覆盖输出
    如果将FileOutputStream构造函数的第2个参数appned设置为true,就会实现追加输出的效果
    2)BufferedOutputStream–高效字节输出流
    构造方法参数:OutputStream,但无法创建抽象父级对象,所以传的是FileOutputStream

    字符输入流 Reader
    1.抽象父级:Reader
    2.普通子级:
    1)FileReader–操作文件的字符输入流
    构造方法参数:File file /String filename
    2)BufferedReader–高效字符输入流
    构造方法参数:Reader,但无法创建抽象父级对象,所以传的是FileReader

    字符输出流 Writer
    1.抽象父级:Writer
    2.普通子级:
    1)FileWriter–操作文件的字符输出流
    构造方法参数:File file /String filename
    注意:默认存在一个参数boolean append,默认值为false,也就是覆盖输出
    如果将FileWriter构造函数的第2个参数appned设置为true,就会实现追加输出的效果
    2)BufferedWriter–高效字符输出流
    构造方法参数:Writer,但无法创建抽象父级对象,所以传的是FileWriter