1. 程式人生 > >System類IO互動

System類IO互動

標準輸出 public static final PrintStream out;
err 錯誤輸出
in 標準輸入裝置
在system 原始碼中系統輸出 有兩個常量 out和err都是printStream的物件
這兩種輸出有一個設計目的out 是使用者能看見的內容,err是使用者不能看見的內容。
這兩種輸出都沒用。
err 會用紅色的顏色輸出。作為一個保留的屬性提供存在。
由於system.out 是PrinitStream 類的例項化物件,而PrintStream又屬於outputStream 的子類,可以用sysout.out為outputStream例項化,OutputStream的輸出位置將變成螢幕輸出。
OutputSream out= System.out; //是利用子類例項實現向上轉型。
再用out.write(“世界和平”.getByte())方法輸出,即完成了子類例項向上轉型的過程。
抽象類不同子類針對於統一方法有不同的實現。

由於一次讀取不完,最好的辦法是引入記憶體操作流程。將資料儲存在記憶體流,通過記憶體流一次性取出。
在記憶體流的操作中,換行不是“-1”需要使用者自己處理換行的問題,換行不是檔案結束。發現結尾是一個換行符。利用if(temp<data.length){break;}來對結尾的回車進行控制,system.in 不好用,system.in 是位元組流,但是用來處理字元的話。如果不考慮中文,只考慮英文問題,那麼則可以按照下面方法來while ((temp=input.read())!=-1){if(temp==’\n’){break; 表示當輸入換行符的時候,從輸入中斷開}}實現了無長度限制的輸入。但是對於中文卻不行,一個也讀不出來,

只能讀半個字元通過比較system.in 的支援度不高,英語還可以接受,利用記憶體流可以彌補一部分不足,但是對於中文來說,還不能支援。在IO中進行中文處理,最好是將所有資料儲存在一起,才能保證不出現亂碼。考慮使用中文,則使用字元輸入輸出流。