概述:对硬盘进行数据的读写相比于从内存中读写数据哟啊慢很多,所以为了高效的读写数据JDK提供了缓冲流。其内部原理就是借助内存的缓冲区来减小硬盘的IO次数,提高性能。
一、高效缓冲字节流BufferedInputStream和BufferedOutputStream:
二、高效缓冲字符流BufferedReader和BufferedWriter:
三、高效缓冲字符流特有的方法:
readLine():一次读取一行数据,读到的内容不包含换行符。返回值是每次读到的内容,如果读到文件末尾返回值为null
newLine():写入一个换行符,换行符会根据操作系统变化而变化。
例 BufferedReader和BufferedWriter:
public static void main(String[] args) {
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader("D:\\fiTest\\11.txt"));
bw=new BufferedWriter(new FileWriter("D:\\fiTest\\22.txt"));
String line;
while ((line=br.readLine())!=null){
System.out.println(line);
bw.write(line);
bw.newLine();//换行符
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(null!=br)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=bw) {
bw.flush();
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
例BufferedInputStream和BufferedOutputStream:
public static void main(String[] args) {
BufferedInputStream br=null;
BufferedOutputStream bw=null;
try {
br=new BufferedInputStream(new FileInputStream("D:\\fiTest\\11.txt"));
bw=new BufferedOutputStream(new FileOutputStream("D:\\fiTest\\55.txt"));
byte[] bytes=new byte[1024*4];
int len;
while ((len=br.read(bytes))!=-1){
bw.write(bytes,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(null!=br)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=bw) {
bw.flush();
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}