read()方法返回值為什么是int?
因為字節輸入流可以操作任意類型的文件,比如圖片音頻等,這些文件底層都是以二進制形式的存儲的,如果每次讀取都返回byte,有可能在讀到中間的時候遇到111111111,那么這11111111是byte類型的-1,我們的程序是遇到-1就會停止不讀了,后面的數據就讀不到了,所以在讀取的時候用int類型接收,如果11111111會在其前面補上24個0湊足4個字節,那么byte類型的-1就變成int類型的255了這樣可以保證整個數據讀完,而結束標記的-1就是int類型
?
?
flush和close方法的區別?
flush()方法
* 用來刷新緩沖區的,刷新后可以再次寫出
close()方法
* 用來關閉流釋放資源的的,如果是帶緩沖區的流對象的close()方法,不但會關閉流,還會再關閉流之前刷新緩沖區,關閉后不能再寫出
?
字節流讀寫中文的問題?
字節流讀取中文的問題
* 字節流在讀中文的時候有可能會讀到半個中文,造成亂碼
字節流寫出中文的問題
* 字節流直接操作的字節,所以寫出中文必須將字符串轉換成字節數組
* 寫出回車換行 write("\r\n".getBytes());