1.缓冲流概述
Java中的缓冲流是为了提高IO操作的性能而设计的。在处理输入和输出时,缓冲流利用内部缓冲区来减少实际的IO操作次数,从而提高读写数据的效率。
其中BufferedInputStream是字节缓冲输入流
BufferedOutputStream是字节缓冲输出流
BufferedReader是字符缓冲输入流
Bufferedwriter是字符缓冲输出流
2.字节缓冲流
2.1BufferedInputStream
把基本流包装成高级流,提高读取数据的性能。
public static void main(String[] args) {
BufferedInputStream f=null;
try {
f =new BufferedInputStream(new FileInputStream("D:/1.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("发生异常原因"+e.getMessage());
}
byte[] b =new byte[100];
try {
int num=f.read(b);
while (num!=-1){
System.out.println(new String(b,0,num));
num=f.read(b);
}
} catch (IOException e) {
e.getMessage();
e.printStackTrace();
}
f.close();
}
此段代码读取D盘文件名为1的文本文档,并且输出1的文本内容。
2.2BufferedOutputStream
BufferedOutputStream outputStream =new BufferedOutputStream(new FileOutputStream("D:/1.txt"));
byte[] b =new byte[100];
String s ="你好世界";
try {
outputStream.write(s.getBytes());
} catch (IOException e) {
e.printStackTrace();
e.getMessage();
}
try {
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
3.字符缓冲流
3.1BufferedReader
BufferedReader继承自Reader类,提供了一些额外的方法来支持缓冲读取。通过BufferedReader,可以逐行读取文本数据并进行处理,也可以使用read()方法逐个字符地读取数据。
//一次读取一个字节
Reader r =new BufferedReader(new FileReader("D:/1.txt"));
try {
int num=r.read();
while (num!=-1){
System.out.println((char) num);
num=r.read();
}
} catch (IOException e) {
}
//一次读取一行
BufferedReader r =new BufferedReader(new FileReader("D:/1.txt"));
try {
System.out.println(r.readLine());
} catch (IOException e) {
}
3.2 BufferedWriter
BufferedWriter是Java中用于写入字符流的类,它继承自Writer类,并实现了缓冲写入。通过BufferedWriter类,可以提高写入大量数据时的性能,因为它会在内存中缓存数据并一次性写入目标。使用BufferedWriter类时,通常会先创建一个FileWriter对象来指定要写入的文件,然后将FileWriter对象传递给BufferedWriter的构造方法中。
public static void main(String[] args) throws IOException {
BufferedWriter w =new BufferedWriter(new FileWriter("D:/1.txt"));
String s ="你好世界,你好java";
w.write(s);
w.newLine();//换行
s="一给我里giaogiao";
w.write(s);
w.close();
}