java io 流(stream)
java.io 包幾乎包含了所有與輸入、輸出操作相關(guān)的類。所有這些流類 stream 代表了輸入源和輸出目標。
java.io 包中的流支持很多種格式,比如:基本類型、對象等。一個流可以理解為一個數(shù)據(jù)的序列。輸入流表示從一個源讀取數(shù)據(jù),輸出流表示向一個目標寫數(shù)據(jù)。
java 為 i/o 提供了強大的而靈活的支持,使其更廣泛地應用到文件傳輸和網(wǎng)絡(luò)編程中。
1. java io 輸入輸出流的類層次圖
2. 讀取控制臺輸入
java 的控制臺輸入由 system.in 完成。
為了獲得一個綁定到控制臺的字符流,你可以把 system.in 包裝在一個 bufferedreader 對象中來創(chuàng)建一個字符流。
1)創(chuàng)建 bufferedreader
創(chuàng)建 bufferedreader 的語法:
bufferedreader br = new bufferedreader(new inputstreamreader(system.in));
bufferedreader 對象創(chuàng)建后,我們便可以使用 read() 方法從控制臺讀取一個字符,或者用 readline() 方法讀取一個字符串。
2)從控制臺讀取多字符輸入
從 bufferedreader 對象讀取一個字符要使用 read() 方法,它的語法如下:
int read( ) throws ioexception
每次調(diào)用 read() 方法,它從輸入流讀取一個字符并把該字符作為整數(shù)值返回。 當流結(jié)束的時候返回 -1。該方法拋出 ioexception。
下面的程序示范了用 read() 方法從控制臺不斷讀取字符直到用戶輸入 q。
//使用 bufferedreader 在控制臺讀取字符 import java.io.*; public class brread { public static void main(string[] args) throws ioexception { char c; // 使用 system.in 創(chuàng)建 bufferedreader bufferedreader br = new bufferedreader(new inputstreamreader(system.in)); system.out.println("輸入字符, 按下 'q' 鍵退出。"); // 讀取字符 do { c = (char) br.read(); system.out.println(c); } while (c != 'q'); } }
以上范例編譯運行結(jié)果如下:
輸入字符, 按下 'q' 鍵退出。 test t e s t q q
3)從控制臺讀取字符串
從標準輸入讀取一個字符串需要使用 bufferedreader 的 readline() 方法。
它的一般格式是:
string readline( ) throws ioexception
下面的程序讀取和顯示字符行直到你輸入了單詞"end"。
//使用 bufferedreader 在控制臺讀取字符 import java.io.*; public class brreadlines { public static void main(string[] args) throws ioexception { // 使用 system.in 創(chuàng)建 bufferedreader bufferedreader br = new bufferedreader(new inputstreamreader(system.in)); string str; system.out.println("enter lines of text."); system.out.println("enter 'end' to quit."); do { str = br.readline(); system.out.println(str); } while (!str.equals("end")); } }
以上范例編譯運行結(jié)果如下:
enter lines of text. enter 'end' to quit. this is line one this is line one this is line two this is line two end end
jdk 5 后的版本我們也可以使用 java scanner 類來獲取控制臺的輸入。
3. 從控制臺輸出
控制臺的輸出由 print( ) 和 println() 完成。這些方法都由類 printstream 定義,system.out 是該類對象的一個引用。
printstream 繼承了 outputstream類,并且實現(xiàn)了方法 write()。這樣,write() 也可以用來往控制臺寫操作。
printstream 定義 write() 的最簡單格式如下所示:
void write(int byteval)
該方法將 byteval 的低八位字節(jié)寫到流中。
1) 輸出單個字符
下面的例子用 write() 把字符 "a" 和緊跟著的換行符輸出到屏幕:
import java.io.*; //演示 system.out.write(). public class writedemo { public static void main(string[] args) { int b; b = 'a'; system.out.write(b); system.out.write('\n'); } }
運行以上范例在輸出窗口輸出 "a" 字符
a
注意:write() 方法不經(jīng)常使用,因為 print() 和 println() 方法用起來更為方便。
2) 輸出字符串
在 java 中,system.out.println() 是我們經(jīng)常會用到的一個語句,它的作用是將內(nèi)容輸出在控制臺,常用于打印調(diào)試信息。除了 system.out.println() 之外,還有其他的打印結(jié)果的方法。
system.out.print(),這個方法與 system.out.println() 很像,區(qū)別就在于,system.out.println() 會在標準的輸出中顯示文字后換行,system.out.print() 輸出文字后不會換行。
例如:輸出兩行字符串。
system.out.println("helloword one-------"); system.out.println("helloword two-------");