更新時間:2022-11-30 11:44:59 來源:動力節(jié)點 瀏覽2206次
InputStream 該類的基本方法 是read() ,它讀取單個無符號字節(jié)數(shù)據(jù)并返回無符號字節(jié)的整數(shù)值。這是一個介于 和 255 之間的數(shù)字:
公共抽象 int read() 拋出 IOException
以下代碼從 System.in輸入流中讀取 10 個字節(jié)并將它們存儲在int數(shù)組中data:
int[] 數(shù)據(jù) = 新的 int[10];
對于 (int i = 0; i < data.length; i++) {
數(shù)據(jù)[i] = System.in.read();
}
請注意,雖然read()正在讀取 a byte,但它會返回 an int。如果您想改為存儲原始字節(jié),則可以將 int轉換為byte. 例如:
字節(jié)[] b = 新字節(jié)[10];
對于 (int i = 0; i < b.length; i++) {
b[i] = (字節(jié)) System.in.read();
}
當然,這會生成一個有符號字節(jié),而不是該read()方法返回的無符號字節(jié)(即,一個在 -128 到 127 范圍內(nèi)的字節(jié),而不是到 255)。只要您在頭腦和代碼中清楚您是在處理簽名數(shù)據(jù)還是未簽名數(shù)據(jù),就不會有任何問題。有符號字節(jié)可以 int像這樣轉換回 255 范圍內(nèi)的 s:
int i = (b >= 0) ? b: 256 + b;
當你打電話時read(),你還必須抓住 IOException它可能拋出的。正如我所觀察到的,輸入和輸出經(jīng)常受到您無法控制的問題的影響:磁盤故障、網(wǎng)絡電纜斷開等。因此,幾乎任何 I/O 方法都可以拋出IOException,read()也不例外。