1. 什么是IO流
    从硬盘读到内存的过程叫读入,input
    从内存读到硬盘的过程叫读出,output
    通过io可以完成硬盘文件的读和写
  2. io流的分类
    有多种分类方式,
    (1)按照流的方向进行分类
    以内存作为参照物,往内存中去,叫做输入,或者叫做读。
    从内存中出来,叫做输出,或者叫做写。
    (2)按照读取数据的不同方式进行分类:
    有的流按照字节的方式读取数据,一次读取一个字节,等同于一次读取8个二进制位
    这种流的万能流,什么类型的文件都可以读取,包括:文本文件,图片,声音
    有的流是安装字符的方式读取数据的,一次读取一个字符,这种流是为了方便读取普通文本文件而存在的,这种流不能读取:图片,声音,视频等文件。只能读取纯文本文件,连word文件都无法读取。
  3. 我们学习流是学习怎么new流对象,调用流对象的那个方法是读,那个方法是写
  4. java io流的四大家族
    java.io.InputStream 字节输入流
    java.io.OutputStream 字节输出流
    Java.io.Reader 字符输入流
    java.io.Writer 字符输出流
    四大家族的首领都是抽象类,所有的流都实现了:java.io.Closeable接口,都是可关闭的都有close方法。
    流毕竟只是一个管道,这个是内存和硬盘之间的通道,用完之后一定要关闭,不然会耗费很多资源。
    所有的输出流都实现了:
    java.io.Flushable接口,都是可刷新的,都是flush方法,用完输出流之后刷新一下。刷新的作用就是清空管道
    注意:在java中只要以steam都叫字节流,以reader或者writer结尾的都叫字符流
  5. java中的流
  6. 相对路径和绝对路径
    idea中的相对路径是在工程下,绝对路径在本地硬盘
  7. fileInputStream流的read方法
    (1)read()读到字符本身,一次读取一个字节,放回字节
    (2)read(数组) 采用byte数组,一次读取多个字节,做多读取去“数组.length"字节
    从硬盘读到数组中


    第二次读的话,因为没有四个了,只能读到两个,而且放到前两个位置,返回2,再读的话,读不到了,返回-1
    skip(long)跳过几个数组
    available()方法,返回未读到的字节数量,作用是可以得到字节总数,用数组一次性读完
  8. 文件输出流