java學習之IO流2

2021-07-03 06:26:30 字數 2221 閱讀 3214

讀取鍵盤輸入

示例1:

下圖中第3行建立位元組讀取流物件,獲取鍵盤讀取流system.in。第4行使用位元組讀取流的read()方法來讀鍵盤資料。第5行進行輸出。

private static void readkey1() throws ioexception 

示例2:

下圖中使用迴圈讀取鍵盤輸入的資料。當鍵入資料時按下回車鍵,此時回車鍵也會被讀取進去,並列印出對於的acsii碼。如果輸入的是漢字,則會分成兩個位元組讀取。

public static void readkey2() throws ioexception 

}

獲取使用者鍵盤錄入的資料,並將資料變成大寫顯示在控制台上,如果輸入over,結束鍵盤錄入。

public static void readkey3() throws ioexception 

if(ch == '\n')

system.out.println(temp.touppercase());

sb.delete(0, sb.length());

}else

}}

轉換流:

inputstreamreader:位元組到字元的橋梁。解碼。

outputstreamwriter:字元到位元組的橋梁。編碼。

下圖中第4行定義了乙個轉換流物件,建構函式中傳遞的是乙個位元組流,就把位元組流轉換成字元流了。然後在用字元緩衝區進行從鍵盤讀取資料的操作。第8行定義了乙個轉換流物件,把位元組流轉換成為字元流。其實就是上個例子的另乙個實現方式。

public static void demo1() throws ioexception

bufw.write(line.touppercase());

bufw.newline();

bufw.flush();

} }

轉換流的編碼和解碼:

下圖中writetext_1()方法使用字元流操作檔案,將「你好」寫到gbk.txt中。使用的碼表是預設碼表gbk,寫入後檔案是4個位元組,即每個漢字是2個位元組。writetext_2()方法使用轉換流,使用碼表是指定碼表utf-8,將「你好」寫入檔案後是6個位元組,即每個漢字是3個位元組。用轉換流對檔案進行讀寫才可以指定編碼表。

public static void writetext_1() throws ioexception

public static void writetext_2() throws ioexception

下圖中readtext_1()方法使用預設的編碼表gbk讀取檔案gbk.txt,因為上圖中是用相同編碼表把字串寫到檔案中去。readtext_2()方法使用了指定的編碼表"utf-8"來讀取檔案u8_1.txt,因為上圖中使用相同的編碼表把字串寫到檔案中去。如果使用不同的編碼表進行編碼解碼,那可能讀出的東西不是你想要的結果。

public static void readtext_1() throws ioexception 

public static void readtext_2() throws ioexception

流的操作規律:

之所以要弄清楚這個規律,是因為流物件太多,開發時不知道用哪個物件合適。

想要知道開發時用到哪些物件,只要通過四個明確即可。

1、明確源和目的(匯)

源:inputstream reader

目的:outputstream writer

2、明確資料是否是純文字資料。

源:是純文字: reader

不是純文字: inputstream

目的:是純文字: writer        

不是純文字: outputstream

3、明確具體的裝置。

源裝置:

硬碟:file

鍵盤:system.in

記憶體:陣列

網路: socket流   

目的裝置:

硬碟:file

控制台:system.out

記憶體:陣列

網路:socket流

4、是否需要其他額外功能

(1)是否需要高效(緩衝區)

是,就加上buffer

(2)轉換

java之IO流學習(三)

這兩個哥們也生了好多崽,操作檔案嘛,當然就有fileinputstream和fileoutputstream了,如何更加的高效呢,包裝一下吧,裝個逼,bufferedinputstream和bufferedoutputstream。public static void main string arg...

java學習之 io流的基本操作 2

對於輸入輸出流,如果每次只一次讀取乙個字元或者位元組,當資料量很大的時候,來回讀取,就好比,每次吃飯,乙個人,一次從電飯鍋裡面取一粒公尺,當然,時間夠長,你也夠吃得飽,但是這樣,你覺得會好嗎?如果,給你乙個碗 一次先從電飯鍋裡面,舀一碗,你吃完這一碗,再去盛一碗,這樣是不是更好呢.所以,在這裡,實現...

Java學習筆記之 IO流之列印流

列印流 三個常量 1.system.in 輸入流 2.system.out 輸出流 除錯 列印日誌 3.system.err 列印出的顏色是紅色的 重定向setin setout seterr 下面為demo public class printstreamdemo01 我們可以看到檔案如下 然後我...