java FileInputStream 位元組流

2021-09-11 16:01:44 字數 869 閱讀 7502

首先要明白,檔案儲存在硬碟上實質上儲存的都是數字,因此通過fileinputstream中的read()方法讀取的是數字。

fileinputstream fis = new fileinputstream(new file("test.txt"));

int x = fis.read();

system.out.println((char)x);

system.out.println((char)fis.read());

system.out.println((char)fis.read());

system.out.println(fis.read());

test.txt檔案的內容是 abc,上面程式的結果是

可以看出,read()方法有乙個指標,指向檔案中的內容,每次讀檔案都指標都會自增。每次呼叫read()方法會讀取乙個位元組,乙個位元組是8位。

-1表示的是檔案的結束符,也就是說,在迴圈讀檔案時,只要沒讀到-1,就說明檔案沒有讀完。

那麼還有乙個問題,為什麼read()方法返回的是int型別而不是byte型別呢?

因為位元組輸入流可以操作任意型別的檔案,比如音訊等,這些檔案底層都是以二進位制形式儲存的,如果每次讀取都返回byte,就有可能在讀檔案的過程中遇到11111111,那麼這個11111111就是byte型別的,我們的程式遇到-1就會停止不讀了,後面的資料就讀不到了,所以在讀取的時候用int型別接收,如果遇到11111111就會在前面補上24個0來湊足4個位元組,那麼byte型別的-1就會變成int型別的255了,這樣就可以保證整個檔案能夠讀完,而結束標記的-1本身就是int型別,因此不需要補0

位元組順序 位元組對齊

一.位元組順序的產生 在計算機中,資料是以位元組為單位存放的,而c語言中只有char才是乙個位元組,其他如int,float都是大於乙個位元組,所以就存在將資料按怎樣的順序存放的問題。一般有大端序和小端序兩種方式,特殊的還有混合序,也就是兩種存放方式同時存在於乙個計算機系統中。上面講的都是主機位元組...

位元組順序 位元組對齊

一.位元組順序的產生 在計算機中,資料是以位元組為單位存放的,而c語言中只有char才是乙個位元組,其他如int,float都是大於乙個位元組,所以就存在將資料按怎樣的順序存放的問題。一般有大端序和小端序兩種方式,特殊的還有混合序,也就是兩種存放方式同時存在於乙個計算機系統中。上面講的都是主機位元組...

寬位元組 多位元組 單位元組 的問題

感覺比較混亂,學習了一通,做個記錄。著急在windows下面用的話,可以先看這個 vc windows 平台字元透明程式設計大總結 寬字串與單位元組字串之間的轉換。c 標準裡面已經提供了 寬位元組轉單位元組 size twcstombs char mbstr constwchar t wcstr s...