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
浙公网安备 33010602011771号