您的位置:首页 > Web前端

bufferreader与bufferwrite以及用法与readline()方法原理自述总结

2015-06-22 13:54 741 查看
缓存可以说是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()、reset()、方法都成为可能。

特点:

缓存区的出现提高了对数据读写的效率。

缓存区要结合流才能实现。

缓存区在流的基础上对流的功能进行了加强。

BufferedReader:

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组、行的高效读取。

构造方法:

BufferedReader(reader in)

创建一个默认大小输入缓存区的字符输入流

BufferedReader(reader in, int sz)

创建一个给定大小输入缓存区的字符输入流

方法:

read();读取单个字符

read(char[] chuf, int off , int len );将字符读入数组的某一部分

readLine();读取一个文本行

实例:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Bufferedreader {

public static void main(String[] args) throws IOException {

FileReader fr = new FileReader("D:\\1.txt");
BufferedReader br = new BufferedReader(fr);
String str = null;
//                      <span style="background-color: rgb(240, 240, 240);">到NULL的时候,说明读到末尾</span>
while((str=br.readLine())!=null){
System.out.println(str);
}

br.close();
}

}


用BufferedReader写的一个小demo,用readLine()方法一行一行读取数据,方便对文本数据的获取,到NULL的时候,说明读到末尾。然后打印数据,最后关闭缓冲流。



readline()方法原理:

readline()的底层实现也是read()方法,也是一次读一个的方法。当readline()读取一个一个的数据暂时取到自己封装的数组当中,当取到换行符的时候,自动把以上取到的数组变成一个字符串,输出出来。



BufferedWriter:

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组、字符串的高效写入。

构造方法:

BufferedWriter(writer out)

创建一个默认大小输出缓存区的字符输出流

BufferedWriter(writer out , int sz)

创建一个给定大小输出缓存区的字符输出流

方法:

close()——关闭缓存区字符输出流

flush()——刷新流缓存数据,实时更新

write()——写入字符

newLine()——写入一个行分隔符,也是该缓存区中提供一个快平台的换行符

实例:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Bufferedwriter {

public static void main(String[] args) throws IOException {

//		字符写入流
FileWriter fw = new FileWriter("D:\\1.txt");
//		缓冲输出流
BufferedWriter bw = new BufferedWriter(fw);
//		输出字符串
bw.write("asdflkjasdlfjla");
//		刷新缓冲流
bw.flush();
//		关闭缓冲流
bw.close();

}
}




用法:

用缓冲区复制文件。

</pre><pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">public class CopyText {

public static void main(String[] args) {
// 声明缓冲输入输出
BufferedReader bis = null;
BufferedWriter bos = null;

// 可能有异常 要try catch
try {
// 创建缓冲输入,写出根路径
bis = new BufferedReader(new FileReader("D:\\1.txt"));
// 创建缓冲输出,写出复制文件路径
bos = new BufferedWriter(new FileWriter("D:\\2.txt"));
// 判断文件字节是否完结,无则继续写入复制文件。
String line = null;
while ((line=bis.readLine())!=null) {
//读取写入
bos.write(bis.read());
bos.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭输入流
try {
if (bis!=null) {
bis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
// 关闭输出流
try {
if (bos!=null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}

}

}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: