InputStream字節輸入流


1、字節輸入流——硬盤中數據寫出到內存中供解析使用:

根據文件存儲原理,8位二進制組成為一個字節,換算后的數值在0-127則查詢ASCII碼表,其他則查詢系統默認表,如簡體中文查詢GBK表;

2、FileInputStream文件字節輸入流: 

 

3、FileInputStream使用實例:

其中,每次調用read方法指針后移一位;最后返回值為-1,繼續讀一直是-1;

 

當長度即元素數量已知時候(點size() 或者 點length() )使用for循環,有索引的可以使用for each 也可以用普通for循環(初始化表達式; 步進表達式; 布爾表達式),

沒有索引的時候只能使用增強for循環及for each;

當長度即元素數量未知時候,使用while循環,括號里是布爾表達式即循環條件即循環結束條件;

若while括號中的條件布爾表達式不用變量接收再判斷的話:

運行結果:

其中,while括號中的條件布爾表達式不用變量接收直接進行判斷的話,會少值,因為每次執行FileInputStream方法時候,指針都在后移一位;

前者使用變量接收,輸出打印變量,只執行了一次read()方法;

后者執行了兩次read()方法;

4、InputStream從硬盤寫出數據到內存然后讀取的原理:

 

其中紅色指針一直在向后移動;

windows系統和linux系統的結束標記不一樣,但通過java虛擬機jvm處理返回到程序里面都是-1;

5、InputStream一次讀取多個字節:

其中,數組存放讀取的字節,緩沖作用;

數組的值一直在動態變化;

重復操作使用循環優化:

其中,因為不知道 FileInputStream fis 對象的大小(length 或者 size),使用while循環;

運行結果:

除了字符串的值,后面還有很多空格,創建的長度為1024(kb)的數組,轉換為字符串時候產生的后面沒有用到空格;

優化:使用String的另外一個帶索引截取固定長度的構造方法:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM