.
為什麼讀取/寫入單個字節/字符,返回值/輸入值都是 int型,為什麼不用 byte/char,如下方法:
.
InputStream:
abstract int read()
從輸入流中讀取數據的下一個字節。
從輸入流中讀取數據的下一個字節。返回 0 到 255 范圍內的 int 字節值。如果因為已經到達流末尾而沒有可用的字節,則返回值 -1。
.
OutputStream:
abstract void write(int b)
將指定的字節寫入此輸出流。
將指定的字節寫入此輸出流。write 的常規協定是:向輸出流寫入一個字節。要寫入的字節是參數 b 的八個低位。b 的 24 個高位將被忽略。
.
Reader:
int read()
讀取單個字符。
返回:
作為整數讀取的字符,范圍在 0 到 65535 之間 (0x00-0xffff),如果已到達流的末尾,則返回 -1
.
Writer:
void write(int c)
寫入單個字符。
寫入單個字符。要寫入的字符包含在給定整數值的 16 個低位中,16 高位被忽略。
參數:
c - 指定要寫入字符的 int。
.
.
而多個字節/字符的讀取/寫入,都是用的byte/char數組,如下方法:
.
Inputstream:
int read(byte[] b)
從輸入流中讀取一定數量的字節,並將其存儲在緩沖區數組 b 中。
int read(byte[] b, int off, int len)
將輸入流中最多 len 個數據字節讀入 byte 數組。
.
OutputStream:
void write(byte[] b)
將 b.length 個字節從指定的 byte 數組寫入此輸出流。
void write(byte[] b, int off, int len)
將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此輸出流。
.
Reader:
int read(char[] cbuf)
將字符讀入數組。
abstract int read(char[] cbuf, int off, int len)
將字符讀入數組的某一部分。
.
Writer:
void write(char[] cbuf)
寫入字符數組。
abstract void write(char[] cbuf, int off, int len)
寫入字符數組的某一部分。
.
最後推廣一下正版問答地址:http://stackoverflow.com/
.
針對一個來說吧..
jvm默認處理數字是int的
比如
byte a =1
byte b = 2 ;
byte c = 1+2 ;
其實java處理的時候..是把 1,2向上轉型成為int..然後加後轉回為byte..
因為早期都是32位的機器..一次處理數據的最小單元是32位也就是一個int..