黑马程序员———IO(中)
来源:互联网 发布:网络摄像头安装视频 编辑:程序博客网 时间:2024/06/07 04:08
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
字符流的缓冲区:
缓冲区的出现提高了对数据的读写效率。
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须先有流对象。
该缓冲区中提供了一个跨平台的换行符。
newLine():写入一个行分隔符。 window版本封装的是\r\n Linux中封装的是\n
1.创建一个字符写入流对象。
2.将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
3.记住,只要用到缓冲区,就要刷新。
4.关闭缓冲区,其实就是在关闭字符写入流对象。
字符读取流缓冲区:
该缓冲区提高了一个一次读 一行的技术,
返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
读取方法:读一个,读数组,读一行。
1.创建一个读取流对象和文件相关联。
2.为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数。
-------------------------------------
装饰和继承:
MyReader//专门用于读取数据的类。
|--MyTestReader
|--MyBufferReader
|--MyMediaReader
|--MyBufferMediaReader
|--MyDataReader
|--MyBufferDataReader
class MyBufferReader
{
MyBufferReader(MyTextReader text)
{}
MyBufferReader(MyMediaReader media)
{}
}
上面这个类扩展性极差。
找到其参数的共同类型,通过多态的形式,可以提高扩展性。
class MyBufferReader extends MyReader
{
private MyReader r;
MyBufferReader(MyReader r)
{
this.r = r;
}
}
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyMediaReader
|--MyDataReader
|--MyBufferReader
装饰模式比继承要灵活,避免了继承体系臃肿。而且降低类与类之间的关系。
------------------------------------
LineNumberReader是BufferedReader的子类。
跟踪行号的缓冲字符输入流。
此类定义了方法setLineNumber(int)和getLineNumber().它们分别用于设置和获取当前行号。
------------------------
/*
装饰设计模式:
当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。
那么自定义的该类称为装饰类。
装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。
*/
//普通类
class Person
{
public void eat()
{
System.out.println("吃饭");
}
}
//装饰类,增强Person类的功能。
class SuperPerson
{
private Person p;
SuperPerson(Person p)
{
this.p = p;
}
public void superEat()
{
System.out.println("开胃酒");
p.eat();
System.out.println("甜点/餐后水果");
}
}
public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
SuperPerson sp = new SuperPerson(p);
sp.superEat();
}
}
缓冲区的出现提高了对数据的读写效率。
对应类:
BufferedReader
BufferedWriter
缓冲区要结合流才可以使用。
在流的基础上读流的功能进行了增强。
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须先有流对象。
该缓冲区中提供了一个跨平台的换行符。
newLine():写入一个行分隔符。 window版本封装的是\r\n Linux中封装的是\n
1.创建一个字符写入流对象。
2.将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
3.记住,只要用到缓冲区,就要刷新。
4.关闭缓冲区,其实就是在关闭字符写入流对象。
字符读取流缓冲区:
该缓冲区提高了一个一次读 一行的技术,
返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
读取方法:读一个,读数组,读一行。
readLine();读一行。
skip();跳过字符。
1.创建一个读取流对象和文件相关联。
2.为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数。
-------------------------------------
装饰和继承:
MyReader//专门用于读取数据的类。
|--MyTestReader
|--MyBufferReader
|--MyMediaReader
|--MyBufferMediaReader
|--MyDataReader
|--MyBufferDataReader
class MyBufferReader
{
MyBufferReader(MyTextReader text)
{}
MyBufferReader(MyMediaReader media)
{}
}
上面这个类扩展性极差。
找到其参数的共同类型,通过多态的形式,可以提高扩展性。
class MyBufferReader extends MyReader
{
private MyReader r;
MyBufferReader(MyReader r)
{
this.r = r;
}
}
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyMediaReader
|--MyDataReader
|--MyBufferReader
装饰模式比继承要灵活,避免了继承体系臃肿。而且降低类与类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常是都属于一个体系中的。
------------------------------------
LineNumberReader是BufferedReader的子类。
跟踪行号的缓冲字符输入流。
此类定义了方法setLineNumber(int)和getLineNumber().它们分别用于设置和获取当前行号。
------------------------
/*
装饰设计模式:
当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。
那么自定义的该类称为装饰类。
装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。
*/
//普通类
class Person
{
public void eat()
{
System.out.println("吃饭");
}
}
//装饰类,增强Person类的功能。
class SuperPerson
{
private Person p;
SuperPerson(Person p)
{
this.p = p;
}
public void superEat()
{
System.out.println("开胃酒");
p.eat();
System.out.println("甜点/餐后水果");
}
}
public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
SuperPerson sp = new SuperPerson(p);
sp.superEat();
}
}
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
- 黑马程序员—IO
- 黑马程序员———IO(中)
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员——IO
- 黑马程序员—IO操作
- 黑马程序员—io流
- 黑马程序员—IO技术
- 黑马程序员—IO流
- 黑马程序员—IO流
- 黑马程序员 — IO流
- 黑马程序员—IO流
- 黑马程序员—IO流
- 黑马程序员—IO流
- 黑马程序员—API-Io
- 黑马程序员—IO流
- 黑马程序员———IO(上)
- pyvisa 1.4 & 1.6 -simple sample
- 个人博客到底要提供什么内容
- 解决引入taglib的时候,tomcat报taglib definition not consistent with specification version错误
- windows-python爬虫之scrapy快速安装
- 黑马程序员———IO(中)
- Java线程(六):JUC包阻塞队列的应用
- 第14周 杨辉三角
- 第三天 android体系结构
- 黑马程序员———IO(下)
- asp.net mvc框架中,ajax传递json对象,并自动转换成参数对象的方法
- Qt QLineEdit 限制输入类型以及大小Int 和double
- BestCoder Round #20 解题报告 A.B.C.
- storm '*/stormconf.ser' does not exist 问题