缓冲流
缓冲流:提高IO流的读写速度
根据流的分类分类字节缓冲流与字符缓冲流
字节缓冲流
写入数据到流中,字节缓冲输出流 BufferedOutputStream
读取流中的数据,字节缓冲输入流 BufferedInputStream
利用字节缓冲流复制 文件 比字节流复制(大文件) 速度快
代码
package com.oracle.demo01;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo3 {
public static void main(String[] args) throws IOException {
//明确目的地
FileOutputStream fos=new FileOutputStream("D:\\demo1018\\buffer.txt",true);
//添加缓冲流
BufferedOutputStream bos=new BufferedOutputStream(fos);
/*//一个字节一个字节写
bos.write(100);*/
byte bytes[]={66,65,67,68};
bos.write(bytes);
//释放资源
bos.close();
}
}
package com.oracle.demo01;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo4 {
public static void main(String[] args) throws IOException {
//明确数据源
FileInputStream fis=new FileInputStream("D:\\demo1018\\buffer.txt");
//添加缓冲流
BufferedInputStream bis=new BufferedInputStream(fis);
//一个字节一个读
int len=0;
while ((len=bis.read())!=-1) {
System.out.println((char)len);
}
//释放资源
bis.close();
}
}
package com.oracle.demo01;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy {
public static void main(String[] args) throws IOException {
//明确数据源
FileInputStream fis=new FileInputStream("D:\\demo1018\\buffer.txt");
//明确目的地
FileOutputStream fos=new FileOutputStream("D:\\demo1018\\a\\buffer2.txt",true);
//添加缓冲流
BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);
/*单个复制
int len=0;
while ((len=bis.read())!=-1) {
bos.write(len);
}*/
//字节数组复制
byte bytes[]=new byte[1024];
int len=0;
while ((len=bis.read(bytes))!=-1) {
bos.write(bytes,0,len);
}
//释放资源
bis.close();
bos.close();
}
}
字符缓冲流
完成文本数据的高效的写入与读取的操作
字符缓冲输入流 BufferedReader 特殊方法 void newLine() 根据当前的系统,写入一个换行符
package com.oracle.demo02;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws IOException {
//名确目的地
FileWriter fw=new FileWriter("D:\\demo1018\\buffer2.txt");
//添加缓冲流
BufferedWriter bw=new BufferedWriter(fw);
//写一个字符
bw.write(100);
bw.flush();
//写一个数组
char ch[]={'你','好','啊'};
bw.write(ch);
bw.flush();
//写入换行
bw.newLine();
bw.flush();
//写一个字符串
bw.write("我很好");
//释放资源
bw.close();
}
}
字符缓冲输出流 BufferedWriter 特殊方法 public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
package com.oracle.demo02;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) throws IOException {
//名确数据源
FileReader fr=new FileReader("D:\\demo1018\\buffer2.txt");
//添加缓冲流
BufferedReader br=new BufferedReader(fr);
//开始一行一行的读
String line=null;
while ((line=br.readLine())!=null) {
System.out.println(line);
}
//释放资源
br.close();
}
}
使用字符缓冲流完成文本文件的复制
1,指定数据源, 是数据源中读数据,采用输入流 2,指定目的地,是把数据写入目的地,采用输出流 3,读数据 4,写数据 5,关闭流
package com.oracle.demo02;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Copyzifuhuanchong {
public static void main(String[] args) throws IOException {
//明确数据源
FileReader fr=new FileReader("D:\\demo1018\\buffer2.txt");
//明确目的地
FileWriter fw=new FileWriter("D:\\demo1018\\b\\buffer2.txt");
//添加缓冲流
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);
//复制
String line=null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
//释放资源
br.close();
bw.close();
}
}
浙公网安备 33010602011771号