程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java-FileOutputStream類的read方法返回值

java-FileOutputStream類的read方法返回值

編輯:編程解疑
FileOutputStream類的read方法返回值

FileInputStream in=new FileInputStream("F:/Test.txt");
FileOutputStream out=new FileOutputStream("G:/Test.txt");
int b;

    while((b=in.read())!=-1){
        out.write(b);
        System.out.println(b);
    }
    in.close();
    out.close();

以上代碼輸出
206
210
202
199
186
195
200
203

b不應該是每次讀取到的byte個數且為1嗎?
對於這段代碼中out.write(b)如何理解?說明文檔中解釋的是將指定字節寫入此文件輸出流,
為何b會輸出上述數值?

最佳回答:


首先,InputStream和OutputStream是基於字節的文件操作類,寫入和讀取的都是一個字節的數據。
其次,write操作是寫入一個字節的數據,這個數據就是你給的那個int類型的值,它最後以字節為單位,本質就是8個01串寫入文件中。
因為文件的本質就是01二進制串,只不過不同的文本編輯器以不同的編碼方式解碼後呈現給我們的才是可閱讀的文本。
你的問題中,write(b)就是將b這個int類型的數值轉換成二進制數據寫入文件中的,read操作就是每次讀取一個字節的01二進制串,然後將其轉換為0到255范圍內的int類型返回,也就是write寫入的那個數。
read的api是這樣的:

 Reads a byte of data from this file. The byte is returned as an integer in the range 0 to 255 ({@code 0x00-0x0ff}).
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved