您的位置:首页 > Web前端

java核心技术之IO流(五)BufferedReader和BufferedWriter

2015-10-16 12:32 555 查看


简单的说明

一般小的字符(char)文件的读取和写入数据,我们使用FileReader和FileWriter类就可以实现了,但是对于大的字符(char)文件的读取和写入数据,性能就会有很大的问题,我们一般选择BufferedReader和BufferedWriter来处理,也就是说BufferedReader和BufferedWriter主要的目的是提高字符(char)文件的内容读取和写入的性能。

BufferedReader和BufferedWriter

BufferedReader类

构造方法:

BufferedReader(Reader in)

创建一个有8192的字符(char)的缓存区

BufferedReader(Reader in, int size)

创建一个有size大小字符(char)的缓存区

关键方法:

read()

read(char[] buffer, int offset, int length)

readLine()——读取一行数据

常用使用方式:

BufferedReader buf = new BufferedReader(new FileReader("file.java"));


BufferedWriter类

构造方法:

BufferedWriter(Writer out)

创建一个有8192的字符(char)的缓存区

BufferedWriter(Writer out, int size)

创建一个有size大小字符(char)的缓存区

关键方法:

write(int oneChar)

write(String str, int offset, int count)

write(char[] buffer, int offset, int count)

newLine()——插入新的一行

flush()

主要是用来把缓存区的数据刷新到文件中去

常用使用方式:

BufferedWriter buf = new BufferedWriter(new FileWriter("file.java"));


一个测试的Demo

定义三个方法:

(1)testBufferedWrite方法—测试BufferedWriter

BufferedWriter的使用方法:

//1.创建一个输入字符文件

//2.定义一个FileWriter

//3.定义一个BufferedWriter

//4.写的操作

//5.关闭对应的流

(2)testBufferedReader方法—-向文件读内容

BufferedReader的使用方法:

//1.创建一个File文件

//2.定义一个FileReader

//3.定义一个BufferedReader

//4.执行读的操作

读的操作有二种方式,一各是按char来读,一种是按行来说。

一般来说按行来读是更简单,更有效的。

//5.关闭对应的流,可以只关闭最外面的流

(3)CopyFile方法—-复制字符文件

//1.定义输入和输出的文件

//2.分别定义FileReader,FileWriter

//3.分别定义BufferedReader,BufferedWriter

//4.实现复制功能

//5.关闭对应 的流,可以只关闭最外面的缓存流就可以

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaderBufferedWrite {

//复制字符文件
public static void CopyFile(String src,String des){
//3.分别定义BufferedReader,BufferedWriter
BufferedReader br = null;
BufferedWriter bw = null;
try {
//1.定义二个文件
File fsrc = new File(src);
File fdes = new File(des);
//2.分别定义FileReader,FileWriter
FileReader fr = new FileReader(fsrc);
FileWriter fw = new FileWriter(fdes);
br = new BufferedReader(fr);
bw = new BufferedWriter(fw);
//4.复制操作
char[] c = new char[2];
int len;
while((len = br.read(c)) != -1){
bw.write(c, 0, len);
bw.flush();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
//5.关闭对应 的流,可以只关闭最外面的缓存流就可以
if(bw != null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(br != null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

//测试BufferedReader
public static void testBufferedReader(){
//3.定义一个BufferedReader
BufferedReader bf = null;
try {
//1.定义一个文件
File f1= new File("testBufferedWrite.txt");
//2.定义一个FileReader
FileReader fr = new FileReader(f1);
bf = new BufferedReader(fr);
//4.执行读的操作
//方式一
//          char[] c = new char[2];
//          int len;
//          while((len = bf.read(c)) != -1){
//              System.out.print(c);
//          }
//方式二
String str;
while((str = bf.readLine()) != null){
System.out.print(str);
System.out.println();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//5.关闭对应的流,可以只关闭最外面的流
if(bf != null){
try {
bf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

//测试BufferedWriter
public static void testBufferedWrite(){
//3.定义一个BufferedWriter
BufferedWriter bw = null;
try {
//1.定义一个文件
File f1 = new File("testBufferedWrite.txt");
//2.定义一个FileWriter
FileWriter fw = new FileWriter(f1);
bw = new BufferedWriter(fw);
//4.写的操作
String str = "测试BufferedWriter";
bw.write(str);
bw.newLine();
bw.write(str);
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//5.关闭对应的流
if(bw != null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}


调用:

//BufferedWriter使用样例
BufferedReaderBufferedWrite.testBufferedWrite();
//测试BufferedReader
BufferedReaderBufferedWrite.testBufferedReader();
//复制字符文件
BufferedReaderBufferedWrite.CopyFile("testBufferedWrite.txt", "testBufferedWrite_copy.txt");


参考资料:

1.BufferedWriterapi文档

android_sdk_docs_offline/reference/java/io/BufferedWriter.html

2.BufferedReader文档

android_sdk_docs_offline/reference/java/io/BufferedReader.html

3.BufferedOutputStream与BufferedReader视频

http://edu.csdn.net/course/detail/805/10967?auto_start=1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java io