Contents
  1. 1. 博客
  2. 2. 精华
  3. 3. 字符流
    1. 3.1. 注意事项:
    2. 3.2. 文本流
    3. 3.3. 文本缓冲流
  4. 4. 字节流
  5. 5. File 类

Demo 源码:
https://github.com/huangzhenshi/IO_NIO_NIO2Dem

博客

IO 流相关

精华

  • 实现文本或者字节的读写操作(区分带缓冲和不带缓冲、字符集设置等)
  • 四个重要的类
    InputStream(字节输入流 抽象类)和Reader(字符输入流)通俗的理解都是读(read)的。

OutputStream(字节输出流 抽象类)和Writer(字符输出流)通俗的理解都是写(writer)的。

字符流

注意事项:

  • 写入文件后必须要用flush()刷新。

  • 用完流后记得要关闭流

  • 使用流对象要抛出IO异常

  • 定义文件路径时,可以用“/”或者“\”。

  • 在创建一个文件时,如果目录下有同名文件将被覆盖。

  • 在读取文件时,必须保证该文件已存在,否则出异常

  • 中文不会乱码,默认GBK

文本流

  • FileWriter 写入字符到文件中

    //直接写,有则覆盖
    FileWriter fw = new FileWriter("C:\\Users\\502764158\\Desktop\\io\\1.txt");
    fw.write("hello world!");
    fw.flush();
    //文本续写
    FileWriter fw = new FileWriter("C:\\Users\\502764158\\Desktop\\io\\1.txt",true);
  • FileReader 读取一个字节或者一个字节数组

    FileReader fr = new FileReader("C:\\Users\\502764158\\Desktop\\io\\1.txt");
    int ch = 0;
    while ((ch=fr.read())!=-1) {
    sop((char)ch);
    }
  • 读写复制

    FileWriter fw = new FileWriter(destination);
    FileReader fr = new FileReader(source);
    char [] buf = new char[1024];
    int num = 0;
    while((num = fr.read(buf))!=-1) {
    fw.write(new String(buf,0,num));
    }
    fr.close();
    fw.close();

文本缓冲流

套用缓冲流后,调用readLine()–>读取一行, bfw.newLine() –> 换行

字节流

字节流类集成图

  1. 字节流和字符流的基本操作是相同的,但是要想操作媒体流就需要用到字节流。

  2. 字节流因为操作的是字节,所以可以用来操作媒体文件。(媒体文件也是以字节存储的)

  3. 读写字节流:InputStream 输入流(读)和OutputStream 输出流(写)

  4. 字节流操作可以不用刷新流操作。

  5. InputStream特有方法:

    int available();//返回文件中的字节个数
    

注:可以利用此方法来指定读取方式中传入数组的长度,从而省去循环判断。但是如果文件较大,而虚拟机启动分配的默认内存一般为64M。当文件过大时,此数组长度所占内存空间就会溢出。所以,此方法慎用,当文件不大时,可以使用。

  1. 字节流缓冲流注意事项:
  • read():会将字节byte()提升为int型值

  • write():会将int类型转换为byte()类型,保留最后的8位。

  • 字节缓冲流要指定缓冲的size,不指定的话,默认就是8192

    private static int defaultBufferSize = 8192;
    public BufferedInputStream(InputStream in) {
    this(in, defaultBufferSize);
    }

File 类

参考 :
https://www.cnblogs.com/biehongli/p/6074713.html
重要的方法:

  • isFile()
  • isDirectory()
  • exits()
  • file.list()
Contents
  1. 1. 博客
  2. 2. 精华
  3. 3. 字符流
    1. 3.1. 注意事项:
    2. 3.2. 文本流
    3. 3.3. 文本缓冲流
  4. 4. 字节流
  5. 5. File 类