您的位置:首页 > 其它

IO流,缓冲区,装饰设计模式

2015-07-12 22:38 363 查看


缓冲区原理:

临时存储数据的方法。减少对设备操作的频率,提高了效率。其实就是

对数据临时缓存到了内存(数组)中。

reade()方法原理:

public int myRead() throws IOException{

if(cout==0){

count = r.read(buffer);

index=0;

}

if(count<0){

return -1;}

char ch = buffer[index];

index++;

count--;

return ch;

}

readLine(): 调用了read ();从缓冲区中获取数据存储到readLine自己的缓冲区,

它会判断终止符,只存储行结束符前的数据。

if(ch=='\r')

continnue;

if(ch=='\n')

return sb.toString();

readLine()方法原理:

public String myReadLine() throws IOException{

StringBuilder sb = new StringBuilder();

int ch =0 ;

while((ch=myRead())!=-1){

if(ch=='\r')

continnue;

if(ch=='\n')

return sb.toString();

sb.append((char)ch);

}

if(sb.length()!=0)

return sb.toString();

return null;

}

****装饰设计模式(wrapper, Decorator): (BufferedReader,BufferedWriter)

可以给对象提供额外的功能,比继承方式更灵活。

装饰类与被装饰类都所属于同一个体系。

同时装饰类中持有装饰类的引用。

BufferedReader bufr= new BufferedReader (new InputStream(System.in));

****** Properties

特点:

1,Hashtable的子类,map集合中的方法都可以使用。

2,该集合没有泛型,键值都是字符串。

3,它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备上

键值的来源也可以是持久化的设备。

Properties prop =new Properties();

prop.list(System.out); // 列出给集合的所有对象,主要用于测试

***IO流的规律总结: 解决的问题,就是开发中具体要使用哪个流对象的问题。

1, 明确数据源,数据汇(数据目的)

其实就是在明确要使用的IO体系。InputStream OutoutStram Reader, Writer

需求中操作的是源: 意味着是读 。 InputStream Reader

需求中操作的是目的: 意味着写。 OutputStream . Writer

2,操作的数据是否是纯文本数据?

是,字符流

否,字节流

是并且是源,Reader

是并且是目的,Writer

通过前两个明确,明确了具体要使用的体系。

明确体系中要使用哪个对象:

源设备:

硬盘,能操作File 的流对象都是,File开头

键盘,System.in;

内存: 数组

网络: socker流

目的设备:

硬盘,能操作File 的流对象都是,File开头

键盘,System.out

内存: 数组

网络: socker流

到第三步明确就可以找到具体的流对象了。

4, 需要额外功能吗?

需要高效吗? 缓冲区,Buffered开头

需要编码转换吗? 转换流。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: