缓冲流与打印流(字节与字符)
缓冲流与打印流(字节与字符)
1、缓冲流
首先要明确一个概念:
对文件或其他目标频繁的读写操作,效率低,性能差
使用缓冲流的好处是,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或读取出来。
BufferedInputStream
: 为另一个输入流添加一些功能,在创建BufferedInputStream时,会创建一个内部缓冲区数组,用于缓冲数据。
BufferedOutputStream
,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。
BufferedReader
:从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组,和行的高效读取。
BufferedWriter
: 将文本写入字符输出流,缓冲各个字符,从而提供单个字符,数组和字符串的高效写入。
1.1、字节缓冲流:
输出流和输入流:无非加一行代码,其他与之前的没有任何区别
public class Test7 {
public static void main(String[] args) {
byteWriter();
byteReader();
}
private static void byteReader() {
try {
InputStream in = new FileInputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
BufferedInputStream bis = new BufferedInputStream(in);
byte[] bytes = new byte[1024];
int len = -1;
while ((len = bis.read(bytes)) != -1) {
System.out.print(new String(bytes, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void byteWriter() {
try {
OutputStream in = new FileOutputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt", true);
BufferedOutputStream bof = new BufferedOutputStream(in);
bof.write("我是字节缓冲流".getBytes());
bof.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.2、字符缓冲流:
输出流和输入流:
public class Test7 {
public static void main(String[] args) {
charWriter();
charReader();
}
private static void charWriter() {
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt", true));
} catch (IOException e) {
e.printStackTrace();
}
try {
assert writer != null;
writer.write("我是字符缓冲流");
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void charReader() {
try {
BufferedReader reader = new BufferedReader(new FileReader("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt"));
char[] chars = new char[1];
int len = -1;
while ((len = reader.read(chars)) != -1) {
System.out.print(new String(chars, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、打印流:
- 字节输出打印流 PrintStream
- 字符输出打印流 PrintWriter
代码演示:
public class Test8 {
public static void main(String[] args) {
bytePrint();
charPrint();
}
private static void charPrint() {
try {
Writer writer = new FileWriter("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
// 加缓存
BufferedWriter bufferedWriter = new BufferedWriter(writer);
// 增强打印
PrintWriter printWriter = new PrintWriter(bufferedWriter);
printWriter.print("我是字符打印流");
printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void bytePrint() {
try {
OutputStream out = new FileOutputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\lili.txt");
// 加缓存
BufferedOutputStream writer = new BufferedOutputStream(out);
// 增强打印
PrintStream printStream = new PrintStream(writer);
printStream.print("我是字节打印流");
printStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!