今天學完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流的種類繁多,需要熟悉
需要幫助的問題