HashSet(是由HashMap实现的)和HashMap(存入KV对)存储机制一样,查询速度快。
HashMap实现的map map
都没有线程安全性,
HashSet实现的Set接口 Set实现的Collection
HashMap实现的Map
Collection与Map是同级别的。
文件复制 用到缓冲区
package com.test;
import java.io.FileReader;
import java.io.FileWriter;
public class CopyFileDemo {
public static void main(String[] args) {
String srcFile="e:/aa.txt";
String tarFile="e:/bb.txt";
FileReader reader=null;
FileWriter writer=null;
try {
//读取src文件的reader
reader=new FileReader(srcFile);
//写入tar文件的fileWriter
writer=new FileWriter(tarFile);
//定义字符缓冲区
char[] buf=new char[1024];
int len=0;
while((len=reader.read(buf))!=-1){
writer.write(buf, 0, len);
}
//操作完毕之后要关流
} catch (Exception e) {
// TODO: handle exception
}finally{
try {
if(reader!=null){
reader.close();
}
if(writer!=null){
writer.close();
}
} catch (Exception e2) {
}
}
}
}
行分割符在java中可以通过 方法得到
系统属性名是line.separator
不同平台的行分隔符是不同的。
windows:\r\n
System.getProperty("line.separator");//执行系统属性名
FileWriter:没有缓冲区功能,本身没有新增任何功能,继承是的outputStreamWriter,
outputStreamWriter继承的是Writer
writer(){
sun.nio.cs.StrenamEncoder.write(....);
}
BufferedWriter:对Writer进行了包装,里面定义缓冲区,提供官入单个字符
char[] String的效率
提高写入效率。
等级树结构object-Writer--BufferedWriter
close()方法:flushBuffer();
flushBuffer();清理缓冲区,将缓冲区数据写入目的地址。
BufferedReader
继承关系树:object-->Reader-->BufferedReader-->LineNumberReader
FileReader
继承关系树:object-->Reader-->InputStreamReader-->FileReader
read(){
InputStreamReader.read(){
}
}
缓存区的引入是为了避免对物理文件的频繁读取与写入