IO流

IO流

IO流的四大家族

/**
  * java.io.InputString 字节输入流
  * java.io.OutputString 字节输出流
  * java.io.Reader 字符输入流
  * java.io.Writer 字符输出流
  */
  • 所有的流都实现了java.io.Closeable接口,都有close()方法,用完流之后一定要记得关闭,不然会占用很多资源
  • 所有的输出流都实现了java.io.Flushable接口,都有flash()方法,清空管道,如果没有flash,可能造成数据的丢失

IO流中需要掌握的16个类

/** 文件专属
  * java.io.FileInputStream 
  * java.io.FileOutputStream
  * java.io.FileReader
  * java.io.FileWriter
  * 转换流
  * java.io.InputStreamReader
  * java.io.OutputStreamWriter
  * 缓冲流
  * java.io.BufferInputStream
  * java.io.BufferOutputStream
  * java.io.BufferReader
  * java.io.BufferWriter
  * 标准输出流
  * java.io.PrintWriter
  * java.io.PrintStream
  * 数据流专属
  * java.io.DataInputStream
  * java.io.DataOutputStream
  * 对象操作流
  * java.io.ObjectInputStream
  * java.io.ObjectOutputStream
  */

模板

package com.jiang.io;

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

/**
 * @author JQC
 * @date 2021/2/8-20:35
 */
public class InputStreamTest3 {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("基础语法\\src\\com\\jiang\\io\\InputStreamTest3.java");
            fos = new FileOutputStream("基础语法/1");
            // 一次读一个byte数组
            byte[] bytes = new byte[1024];
            int readCount = 0;
            while ((readCount = fis.read(bytes)) != -1){
                // 数组有可能没读完,为了防止多写,所以写到readCount
                fos.write(bytes,0,readCount);
            }
            // 强制清空管道
            fos.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 避免空指针
            // 先开的后关
            // 要分开try,不然上面那个抛异常会导致下面那个关不了
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
posted @ 2021-02-08 20:51  阿灿呀  阅读(81)  评论(0)    收藏  举报