java IO(四):键盘录入
要讀取鍵盤輸入的數(shù)據(jù),需要使用輸入流,可以是字節(jié)輸入流,也可以是字節(jié)輸入流轉(zhuǎn)換后的字符輸入流。
關(guān)于鍵盤輸入,有幾點(diǎn)注意的是:
(1).鍵盤輸入流為System.in,其返回的是InputStream類型,即字節(jié)流。
(2).字節(jié)流讀取鍵盤的輸入時(shí),需要考慮回車符(\r:13)、換行符(\n:10)。
(3).按行讀取鍵盤輸入時(shí),需要指定輸入終止符,否則輸入將被當(dāng)作here String文本,而非document。
(4).System.in字節(jié)流默認(rèn)一直處于打開(kāi)狀態(tài),可不用對(duì)其close(),但如果close()了,后續(xù)將不能使用in流。
例如,以字節(jié)輸入流讀取輸入,此時(shí)只能輸入ascii碼中的符號(hào)。如果需要讀取中文字符,使用字節(jié)流則需要加很多額外的代碼來(lái)保證中文字符的字節(jié)不會(huì)被切分讀取。
import java.io.*;public class KeyB {public static void main(String[] args) throws IOException {InputStream in = System.in;int ch = in.read();System.out.println(ch);int ch1 = in.read();System.out.println(ch1);int ch2 = in.read();System.out.println(ch2);int ch3 = in.read();System.out.println(ch3);int ch4 = in.read();System.out.println(ch4);} }以上示例中,將讀取鍵盤上輸入的5個(gè)字節(jié),例如輸入"ab"回車后,將輸出"ab\r\n"的ascii碼(97-98-13-10),并繼續(xù)等待輸入下一個(gè)字節(jié)才退出。
要想一次性讀取一行,可以將它們讀取到字節(jié)數(shù)組中,并以回車符、換行符判斷一行讀取完畢,再將字節(jié)數(shù)組轉(zhuǎn)換為字符串輸出。雖然用字節(jié)流能夠完成這樣的操作,但顯然,如果使用字符流,則更輕松。
import java.io.*;public class KeyB {public static void main(String[] args) throws IOException {//InputStream in = System.in //鍵盤輸入字節(jié)流//InputStreamReader isr = new InputStreamReader(in); //橋梁,將字節(jié)流轉(zhuǎn)換為字符流//BufferedReader bufr = new BufferedReader(isr); //以BufferReader的readLine()讀取行BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));String line = null;//line = bufr.readLine();System.out.println(line); //輸入一行立即退出while((line = bufr.readLine())!=null) { //循環(huán)輸入多行,直到輸入終止符時(shí)才退出if (line.equals("quit")) { //定義鍵盤輸入終止符quitbreak;}System.out.println(line);}} }注意,BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));幾乎是涉及到鍵盤錄入時(shí)的一條固定代碼,屬于可以直接背下來(lái)的。
以下是一個(gè)示例,需求是將鍵盤輸入的結(jié)果保存到文件d:\myjava\a.txt中。
import java.io.*;public class Key2File {public static void main(String[] args) throws IOException {//1.源:鍵盤輸入,目標(biāo):文件//2.輸入中可能包含中文字符,所以采用字符流,輸出也采用字符流//3.需要使用Buffered流來(lái)提高效率并使用其提供的行操作方法BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bufw = new BufferedWriter(new FileWriter("d:/myjava/a.txt"));String line = null;while((line=bufr.readLine())!=null) {if(line.equals("quit")) {break;}bufw.write(line);bufw.newLine();bufw.flush();}bufw.close();} }注:若您覺(jué)得這篇文章還不錯(cuò)請(qǐng)點(diǎn)擊右下角推薦,您的支持能激發(fā)作者更大的寫作熱情,非常感謝!
轉(zhuǎn)載于:https://www.cnblogs.com/f-ck-need-u/p/8159057.html
總結(jié)
以上是生活随笔為你收集整理的java IO(四):键盘录入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pymssql.OperationalE
- 下一篇: 通过Scanner从控制台获取数据