缓冲流讲解
来源:互联网 发布:双11淘宝每年销售额 编辑:程序博客网 时间:2024/06/08 18:41
今天讲解了缓冲流BufferedReader BufferedWriter。
1.缓冲字符流出现的原因:FileReader对象,每次调用read()方法进行读操作时,都会直接去文件中读取字节,转换成字符并返回,这样频繁的读取文件效率很低。
2.就是对数组进行封装。因为在运用缓冲的过程中,在读取时是在调用read(),当调用的字符已满所定的内存时,就会封装成数组去访问磁盘文件。
3. BufferedReader(Reader in);:参数Reader是BufferedReader的父类,只要是Reader的子类都可以传过来,体现了类的多态性
BufferedReader(Reader in,int sz); int sz 是制定缓冲区的内存容量
4.对缓冲字符流的实例的部分代码:----红色部分是会缓冲流的创建
FileWriterfw=null;
BufferedWriterbw=null;
try {
fw = newFileWriter("demo.txt");//字符的输出流,数据的写入
bw = new BufferedWriter(fw);//构建缓冲的字符流,对已有流的封装
bw.write("hell0");
bw.newLine();//增加换行符
bw.write("java");
bw.newLine();
bw.flush();//把缓冲区的内容刷新到目的地
5. 缓冲字符流有几个特有的方法:
public String readLine();
public void newLine();
对readLine()方法的使用的部分代码:
FileReader fr = null;
BufferedReader br = null;
try {
fr=new FileReader("res/demo.txt");
br = newBufferedReader(fr,255);//255指定缓冲区
String str= null;
while((str=br.readLine())!=null){
System.out.print(str);
}
6.了解readLine()方法的原理,自己创建一个类,来实现这个操作。
public class MyBufferedReader {
//属性
private Reader r;
//构造方法
public MyBufferedReader(Reader r){
this.r=r;
}
//readLine()方法:读一行,增加一个缓冲区,然后调用r对象的read()
//读取字符放到缓冲区,当读到行标记时,把缓冲区的字符转换成字符串返回
public String readLine(){
//缓冲区
StringBuffer strB=new StringBuffer();
int ch=0;
try {
while((ch=r.read())!=-1){
if(ch=='\r')
continue;
if(ch=='\n'){
//当这行结束了
return new String(strB);
}else{
strB.append((char)ch);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(strB.length()!=0){
return new String(strB);
}
return null;
}
//close()方法
public void close(){
try {
r.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
7.装饰设计模式
装饰设计模式比继承有更好的灵活性
A)继承:通过所学的继承特性,可以建立MediaWriter类的子类和TextWriter类的子类,在子类中重写父类的write方法即可
增加的这些子类都是在使用缓冲技术。可不可以对缓冲技术进行描述,将需要增强的对象传递给缓冲区即可。
B)要继续在该类中添加构造函数。这样不利于扩展和维护。如
BufferedWriter(MediaWriter mw){}
BufferedWriter(TextWriter mw){}
解决方式。利用Java语言的多态来解决。用父类Writer作为参数
- 缓冲流讲解
- 双缓冲技术讲解
- 缓冲流
- 缓冲流
- 缓冲流
- 缓冲流
- 标准I/O的缓冲机制的实例讲解
- 关于高速缓存和I/O高速缓冲的讲解
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 缓冲字符流
- 输入输出流缓冲
- IO输入输出
- 随笔
- c#调用托管dll
- 求最大公约数问题
- iphone ios Object-C 中的Selector 概念
- 缓冲流讲解
- iphone ios 消息通信机制NSNotificationCenter
- HttpClient 教程 (一)
- 理解iOS中的MVC设计模式
- 字节流与转换流讲解
- C/C++中内存区域划分大总结
- HttpClient 教程 (二)
- IO流操作与文件File操作
- 当你输入一个网址的时候,实际会发生什么?