---------------------- android培训、java培训、期待与您交流! ----------------------
Propertise
是hashtable的子类,也就是说它具备map集合的特点,而且它里面存储的健值对都是字符串,是集合中和IO技术相结合的集合容器,这对象可以用于键值对形式的配置文件。
Propertise可以从流中加载键值对信息,涉及到IO都会有异常,想要将文件存入集合中,先用一个流跟所要的文件,一行一行读取,左边作为键,右边作为值
PrintWriter
打映流的意思,特点是为其他输出流添加了功能,这哥们提供了打映方法,可以将各种数据类型都原样打映。
PrintStream是字节打映,字节打映在操作的时候可以直接操作文件,凡是跟流操作都是比较重要的对象,构造函数可以接收的参数类型,可用字符串
PrintWiter,文件对象,字符串路径,字节输出流,字符输出流
管道流
读和写都有,作用是流读取流和写入流经常都有关系,什么时候可以使用,中间要有中转站,而到了管道流,它两就可以接上,一边写,另一边就可以接到,这就是管道流。
那谁先执行呢?读的先执行,还是写的先执行,管道输入流应该连接到管道输出流,不建议对这管道使用单线程,因为可以会阻塞。
只要没读到数据,线程就还在等待,录入的时候会唤醒,多线程没有就等到,这是涉及到多线程的IO对象。
要么构造方法,要么方法,管道流示例,我们要加入多线程技术,创建多线程给它一个管道就行了
字符编码
编码其实就是把数据进行转换,把看不懂的变成看懂的,字节是最小单位,字符串变字节数组是编码,解码是字节数组变字符串,用的方法是String变byte[],str.getBytes();,new String
字符读取流缓冲区:
该缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。
当返回null时,表示读到文件末尾。
readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。
//创建一个读取流对象和文件相关联。
FileReader ff = new FileReader("bbb.txt");
//为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。
BufferedReader bufr = new BufferedReader(ff);
缓冲区的出现是为了提高流的操作效率而出现的。
所以在创建缓冲区之前,必须要先有流对象。
该缓冲区中提供了一个跨平台的换行符。
newLine();
装饰与继承
MyReader//用于读取数据的类。
|--MyTextReader
|--MyBufferTextReader
|--MyMediaReader
|--MyBufferMediaReader
|--MyDataReader
|--MyBufferDataReader
class MyBufferReader extends MyReader
{
private MyReader r;
MyBufferReader(MyReader r)
{}
}
MyReader//专门用于读取数据的类。
|--MyTextReader
|--MyMediaReader
|--MyDataReader
|--MyBufferReader
通过继承子类可具备缓冲功能,但复杂,不利扩展性
可通过谁需要被缓冲,谁就作为参数传递给缓冲区。
这样继承体系就变得很简单。优化了体系结构。
装饰模式比继承要灵活。避免了继承体系臃肿。
而且降低了类于类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常是都属于一个体系中的。
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima