IO流(输入输出)

概述

通过不同输入输出设备(键盘、内存、显示器、网络)等之间的数据传输抽象表述为"流"。Java中的"流"位于java.io包中,称为IO流。

IO的分类

按照流的方向划分:

输入流和输出流。

按照流的数据类型划分:

字节流和字符流。

  • 字节流:

    输入流:InputStream

    输出流:OutputStream

  • 字符流:

    输入流:Reader

    输出流:Writer


字节流输入输出常用方法

InputStream常用方法

方法 描述
int read() 从输入流读取一个8位的字节,把它转换为0~255之间的整数,并返回这一整数
int read(byte[] b) 从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取字节的数目
int read(byte[] b,int off,int len) 从输入流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节数目
int close() 关闭并释放该流的所有系统资源

OutputStream常用方法

方法 描述
void write(int b) 向输出流写入一个字节
void write(byte[] b) 把参数b指定的字节数组的所有字节写到输出流
void write(byte[] b,int off,int len) 将指定byte数组从下标off开始,len个字节写入输出流
void flush() 刷新此输出流并强制写出所有缓冲的输出字节
void close() 关闭此输出流并释放此流相关的所有系统资源

字符流输入输出常用方法

FileReader常用方法

方法 描述
void close() 关闭并释放流资源
int read() 读一个字符
int read(char[] cbuf) 将字符读入数组
int read(char[] cbuf,int off,int len) 读取一个字符数组,从下标off开始,len个长度后结束

FileWriter常用方法

方法 描述
void close() 关闭并释放流资源
void flush() 强行释放流中的资源
write(int c) 写一个字符
write(String str) 写一个字符串
write(String str,int off,int len) 写一个字符串str,从off下标开始到len个长度后结束
write(char[] cbuf) 写一个字符数组
write(char[] cbuf,int off,int len) 写一个字符数组,从off下标开始到len个长度后结束

IO流使用注意事项

IO流使用中可能会出现文件找不到等异常,为了代码简洁,有时会直接使用throws关键字将异常抛出,这会导致当异常出现时,代码执行中断,close()方法无法执行,流对系统占用的资源得不到释放。因此,

建议将流的操作写在finally代码块中,使用try-catch代码块包裹起来。

代码示例如下:

finally{
  try{
    if(in != null){
      in.close()
    }
    if(out != null){
      out.close();
    }
  }catch(Exception e){
    e.printStackTrace();
  }
}

其他版本的try-catch处理方式详见try-with-resources

posted on 2021-10-18 21:15  技术小伙伴  阅读(378)  评论(0)    收藏  举报