IO流(缓冲流)
IO流(缓冲流)
一,前言
掌握缓冲流的概念,掌握字节字符缓冲流的使用,掌握字符流读行方法,换行方法。
二,概念
缓存流也称为高效流,或者高级流。缓冲流自带缓冲区,可以提高原始字节流,字符流读写数据的性能。
BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter
三,字节缓冲输入流(BufferedInputStream)
在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。缓冲区用以减少频繁的IO操作,提高程序的性能。
1.构造方法
BufferedInputStream(InputStream in):
创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size):
创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
2.常用方法
void close():
关闭此输入流并释放与该流关联的所有系统资源。
int read(byte[] b):
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
四,字节缓冲输出流(BufferedOutputStream)
在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。缓冲区减少IO操作以提高性能。
1.构造方法
BufferedOutputStream(OutputStream out):
创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size):
创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。
2.常用方法
void close():
关闭此文件输出流并释放与此流相关联的任何系统资源。
void write(byte[] b,int off,int len):
将 b.length个字节从指定的字节数组写入此文件输出流。
void flush():
刷新此输出流并强制任何缓冲的输出字节被写出。
五,字符缓冲输入流(BufferedReader)
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
1.构造方法
BufferedReader(Reader in):
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz):
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
2.常用方法
String readLine():
读取一个文本行。
六,字符缓冲输出流(BufferedWriter)
BufferedWriter使用装饰器模式,对Writer类的子类提供缓存机制。
1.构造方法
BufferedWriter(Writer out):
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz):
创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
2.常用方法
void newLine():
写入一个行分隔符。
七,字符缓冲流的操作示例
例:
public static void main(String[] args) {
//创建缓冲流
File file = new File("E:/aaaa.txt");
File f = new File("C:\\Users\\29854\\Desktop\\aaa.txt");
BufferedReader bd = null;
BufferedWriter bw = null;
try {
bd = new BufferedReader(new FileReader(file));
bw = new BufferedWriter(new FileWriter(f,true));
//读写数据
String str = null;
while ((str = bd.readLine()) != null) {
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关流
if (bd != null) {
try {
bd.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
八,附加(缓冲区的概念)
某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低;
为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律