BufferedReader和BufferedWriter(七)
原创
©著作权归作者所有:来自51CTO博客作者两个蝴蝶飞的原创作品,请联系作者获取转载授权,否则将追究法律责任
勿以恶小而为之,勿以善小而不为--------------------------刘备
劝诸君,多行善事积福报,莫作恶
上一章简单介绍了 Scanner读取文件和输入数据(六),如果没有看过,请观看上一章
以前读取和写入文件内容时,用的Reader和Writer, 当调用 read() 或者 readLine() 方法时,效率是非常慢的。 如果能添加缓冲区,那么就非常好了。 BufferedReader 和 BufferedWriter ,就是在 Reader和 Writer 的基础上,添加了缓冲区, 即不仅具有Reader和Writer的各个功能,还能通过缓冲区进行相应的优化, 其实,这就是装饰器。
一. BufferedReader
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
一.一 方法
一.一.一 构造方法
一.一.一.一 方法
方法
| 作用
|
BufferedReader(Reader in)
| 传入一个 Reader对象
|
其中,传入的这个 Reader 既可以是 FileReader 这样直接的对象,也可以是 InputStreamReader 这样转换过来的对象,有这两种常见形式。
建议采用第二种,转换流的方式。
一.一.一.二 演示
@Test
public void readConTest() throws Exception{
File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
+File.separator+"rz.txt");
//构造字符的 默认8192
BufferedReader br=new BufferedReader(
new FileReader(file),8192);
//建议采用第二种方式
BufferedReader br1=new BufferedReader(
//跟转换流
new InputStreamReader(new FileInputStream(file))
);
}
一.一.二 读取方法
方法
| 作用
|
void close()
| 关闭流并释放与之相关联的任何系统资源
|
int read()
| 读取一个字符
|
int read(char[] cbuf, int off, int len)
| 读取 off到off+len的内容到 cbuf字符数据中,返回读取的内容
|
String readLine()
| 读取一行文字,即按行读取, 回车符时结束
|
常常使用 readLine() 一行一行的读取,返回结果直接就是字符串,不用转换。
一.二 BufferedReader 演示
一.二.一 读取文件内容
@Test
public void readTest() throws Exception{
File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
+File.separator+"Hello3.txt");
//构造字符的 默认8192 8M 8M的读
BufferedReader br=new BufferedReader(
//跟转换流
new InputStreamReader(new FileInputStream(file))
);
String temp="";
while(null!=(temp=br.readLine())){
System.out.println("输出行:"+temp);
}
}
运行程序,控制台打印出文件的内容:
一.二.二 读取控制台 System.in 输入
public static void main(String[] args) throws Exception {
readSystem();
}
public static void readSystem() throws Exception{
System.out.println("请输入问候语:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String password=br.readLine();
System.out.println("输出问候语:"+password);
}
运行程序:
二. BufferedWriter
二一 方法
二.一.一 构造方法
二.一.一.一 方法
方法
| 作用
|
BufferedWriter(Writer out)
| 传入一个 Writer 对象
|
其中,传入的这个 Writer 既可以是 FileWriter 这样直接的对象,也可以是 InputStreamWriter 这样转换过来的对象,有这两种常见形式。
建议采用第二种,转换流的方式。
二.一.一.二 演示
@Test
public void writeConTest() throws Exception{
File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
+File.separator+"Hello3.txt");
//第一种
BufferedWriter bufferedWriter=new BufferedWriter(
new FileWriter(file,true)
);
//最好是用第二种转换的
BufferedWriter bufferedWriter1=new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(file))
);
}
二.一.二 写入方法
方法
| 作用
|
void close()
| 关闭流,先刷新
|
void write(int c)
| 写入一个字符
|
void write(char[] cbuf, int off, int len) )
| 写入字符数组中的一部分
|
void write(String s, int off, int len)
| 写入字符串的一部分
|
void newLine()
| 换行, 兼容不同系统
|
常常使用 write(String s, int off, int len) 直接写入字符串文本。
如果需要换行的话, 用 newLine() 方法进行换行。
二.二 BufferedWriter 演示
Hello3.txt 目前的文件内容是:
@Test
public void writeTest() throws Exception{
File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
+File.separator+"Hello3.txt");
BufferedWriter bufferedWriter1=new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(file))
);
//重启一行, 其实就是内部写 \r\n
bufferedWriter1.newLine();
bufferedWriter1.write("我是BufferedWriter写入的内容");
bufferedWriter1.newLine();
bufferedWriter1.write("Hello",2,3);
bufferedWriter1.close();
}
运行程序,查看 Hello3.txt 文件的内容(重写写入的)
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!