——- android培训、java培训、期待与您交流! ———-
一、BufferedReader类
1、定义:
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
注:可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
2、常用方法:
常用的方法如下:
BufferedReader(Reader in) -> 在创建一个使用默认大小输入缓冲区的缓冲字符输入流。
close() -> 关闭该流并释放与之关联的所有资源。
read() -> 读取单个字符。
read(char[] cbuf, int off, int len) -> 将字符读入数组的某一部分。
readLine() -> 读取一个文本行。
代码块
练习:通过字符数组进行读取D盘下的demo.txt文件,然后在控制台上显示。
package com.itheima2;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
/**
* 字符流的缓冲区:
* 出现时为了提高流的操作效率而出现的。
* 所以在创建缓冲区之前,必须要先有流对象
*
* 该缓冲区中提供了一个跨平台的换行符。
* newLine();
*
* readLine();不返回任何终止符
*
* 装饰设计模式:
* 当想要对已有的对象进行功能增强时,
* 可以定义类。将已有对象传入,基于已有的功能,并提供加强功能。
* 那么自定义的该类称为装饰类。
*
* 装饰类通常会通过构造方法接收被装饰的对象。
* 并基于被装饰的对象的功能,提供更强的功能。
*
* BufferedReaderDemo2对象
* @author jjy
*/
public class BufferedReaderDemo2{
public static void main(String args[])throws IOException{
FileReader fr = new FileReader("D:\\buf.txt");
//为了提高效率。加入缓冲技术。
BufferedReader bufr = new BufferedReader(fr);
String line = null;
while((line=bufr.readLine())!=null){
System.out.println(line);
}
String s1 = bufr.readLine();
System.out.println("s1:"+s1);
bufr.close();
}
}
运行结果:
abcde
s1:null
一、BufferedWriter类
1、定义:
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
注:该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 (‘\n’) 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。
2、常用方法:
常用的方法如下:
BufferedWriter(Writer out) -> 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
close() -> 关闭该流并释放与之关联的所有资源。
flush() -> 刷新该流的缓冲。
newLine() -> 写入一个行分隔符。
write(int c) -> 写入单个字符。
write(char[] cbuf) -> 写入字符数组。
write(char[] cbuf, int off, int len) -> 写入字符数组的某一部分。
代码块
练习:使用FileWriter类在D盘的buf.txt中写入“abcde”字符串。
package com.itheima2;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* 字符流的缓冲区:
* 出现时为了提高流的操作效率而出现的。
* 所以在创建缓冲区之前,必须要先有流对象
*
* 该缓冲区中提供了一个跨平台的换行符。
* newLine();
*
* BufferedWriterDemo1对象
* @author jjy
*/
public class BufferedWriterDemo1{
public static void main(String args[]){
FileReader fr = null;
try {
//创建一个字符写入流对象。
FileWriter fw = new FileWriter("D:\\buf.txt");
//为了提高字符写入流效率。加入了缓冲技术。只要将需要被提高效率的流对象作为
//参数传递给缓冲区的构造函数即可。
BufferedWriter bufw = new BufferedWriter(fw);
bufw.write("1234567");
bufw.flush();
//其实关闭缓冲区,就是在关闭缓冲区中的流对象。
bufw.close();
} catch (IOException e) {
System.out.println(e.toString());
}finally{
try {
if(fr!=null){
fr.close();
}
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}
运行结果:
1234567