今天学完IT十八掌第十三天java基础课程:
学习内容:
HashMap
HashSet
entrySet()
|--getKey( )
|--getValue( )
keySet()
|--get(Key)
----------
有无缓冲区性能评测
缓冲区的原理是先将字符写入数组,然后在批量写入文件,避免对物理文件的频繁访问,提高效率。
行分割符在java中可以通过方法得到.
系统属性名是line.separator.
不同平台的行分隔符是不同的。
windows7:\r\n
macOS :\n
--------------------------------
System.getProperty("line.separator"); //执行系统属性名/
FileWriter : 没有缓冲区功能、
---------------------------
本身没有新增任何功能,继承的OutputStreamWriter。
write(){
//直接写入数据到文件中。
sun.nio.cs.StreamEncoder.write(...);
}
BufferedWriter:
----------------------------------
对Writer进行包装,里面定义缓冲区,提供写入单个字符、char[]、String方法。
提高写入效率。
等级树结构:Object --> Writer --> BufferedWriter
flushBuffer() : 清理缓冲区,将缓冲区数据写入目的地。
close()方法 : 包含flushBuffer()。
FileReader
-----------------
继承关系树:Object --> Reader --> InputStreamReader --> FileReader
read() {
InputStreamReader.read(){
sun.nio.cs.StreamDecoder.read();
}
}
BufferedReader
------------------
继承关系树:Object --> Reader --> BufferedReader --> LineNumberReader
read(){
char[] cbuf = ... ;
cbuf[xxx] = c ;
fill();
return c ;
}
避免对物理文件的频繁访问。
byte[] bytes = new byte[1023][1024][1024];
byte[] b2 = bytes ;
.
.
.
.
bytes = null ;
flush() //清理
refresh() //刷新
clear() //清空
OutputStream:输出流
------------------------
metadata : 元数据,描述数据的数据。
-----------------------------------
遇到的问题:
IO流的种类繁多,需要熟悉
需要帮助的问题