Map<K,V>接口有一个早期的实现类是Hashtable<K,V>,目前已被HashMap所取代,但Hashtable下有一个子类目前仍在使用。即Properties集合,该集合是目前唯一一个与IO流结合的集合
一、Properties集合
Properties集合同样是一个双列集合,它的属性列表中的键和值都是字符串
使用Properties集合中的store方法把集合中的临时数据写入到硬盘中存储
使用Properties集合中的load方法把硬盘中保存的键值对读取到集合中使用
Properties集合中的一些方法如下:
setProperty方法即调用Map集合的put方法,getProperty方法相当于Map集合中的get(Key)方法,stringPropertyNames方法相当于Map集合中的keySet方法
使用store方法:
1.void store(OutputStream out,String comments); 使用字节输出流,不能写入中文
2.void store(Writer writer,String comments); 使用字符输出流,可以写入中文
comments:解释说明用的字符串,不能使用中文,一般使用" "
使用load方法:
1.void load(InputStream inStream); 使用字节输入流,不能读取含中文的键值对
2.void load(Reader reader); 使用字符输入流,可以读取含中文的键值对
注意:
1.存储键值对的文件中,键与值得连接符合可以是=、空格等其他符号
2.存储键值对的文件中,可以使用#在键值对前注释,被注释的键值对不会再被读取
二、缓冲流
缓冲流,也叫高效流,是对四个Filexxx流的增强,分为字节缓冲流:BufferedInputStream和BufferedOutputStream,字符缓冲流:BufferedWriter和BufferedReader
缓冲流的基本原理:在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少IO次数,从而提高读写的效率
1.BufferedOutputStream:字节缓冲输出流
构造方法:BufferedOutputStream(OutputStream out); 将数据写入底层的输出流
BufferedOutputStream(OutputStream out,int size); 指定缓冲区大小
因此使用时:
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("文件路径"));
2.BufferedInputStream:字节缓冲输入流
构造方法:BufferedInputStream(InputStream in);
BufferedInputStream(InputStream in,int size); 指定缓冲区大小
因此使用时:
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("文件路径"));
之后的使用同之前的Filexxx相同
3.BufferedWriter:字符缓冲输出流
构造方法:BufferedWriter(Writer out);
BufferedWriter(Writer out,int size); 指定缓冲区大小
该流特有的方法:void newLine(); 写入一个行分隔符,即换行,不同系统下行分隔符也不同
4.BufferedReader:字符缓冲输入流
构造方法:BufferedReader(Reader in);
BufferedReader(Reader in,int size); 指定缓冲区大小
该流特有的方法:String readLine(); 读取一行数据,返回值即包含该行内容的字符串,如果已达到流末尾,则返回null