1、什麼是流?:流是用來載體與載體之間傳送數據的。【載體是數據的載體,如:如果數據存放在硬盤上,則硬盤是載體,放U盤上,則U盤是載體,以此類推】
2、流傳送數據的方式是什麼?:一個字節一個字節的傳送,說白了就是傳送字節數組。【字節數組是連續的內存空間】
3、把對象用流傳送必須先轉換為字節數組。
4.讀文件實質:string---->編碼、序列化、把字符串轉換為字節數組--->byte[]--->fs[FileStream]--->文件
5.寫文件的實質:文件--->fs[FileStream]--->byte[]--->解碼、反序列化、把字節數組轉換為字符串--->string
6、當流對文件進行寫操作[Write]時,會自動調用一個新線程來專門寫文件,所以對文件的寫操作完畢後必須清空緩沖區,fs.Flush(); fs是FileStream的一個實例,即--->清空非托管內存。因為在進行對文件的寫操作時,會新建一個文件,Windows系統將會調用 windows代碼,才會存在非托管內存。 調用fs.Flush()時主線程等待從線程寫入完畢,就相當於調用了EndInvoke(),它自動實現了IDisposable接口來釋放非托管內存.
7、在對文件進行讀取操作的時候,可能出現亂碼,原因是--->沒有采用同一套字符集的編碼器。如:UTF8ENCODING、gb2312、UNICODE等
8、流的分類:
byte[]---------->文件流--------->文件
byte[]--------->網絡流--------->網絡
byte[]--------->內存流--------->對象
byte[]--------->緩存流--------->另一個流