设为首页收藏本站

IT技术擎 - 最棒的IT web技术交流社区

 找回密码
 注册为IT技术擎人

QQ登录

只需一步,快速开始

搜索
热搜: php h5 jquery
查看: 35|回复: 0

[其他] java IO(四):键盘录入

[复制链接]

1万

主题

1万

帖子

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
42537
发表于 2018-3-14 01:09:10 | 显示全部楼层 |阅读模式
要读取键盘输入的数据,需要使用输入流,可以是字节输入流,也可以是字节输入流转换后的字符输入流。 关于键盘输入,有几点注意的是:(1).键盘输入流为System.in,其返回的是InputStream类型,即字节流。(2).字节流读取键盘的输入时,需要考虑回车符(\r:13)、换行符(:10)。(3).按行读取键盘输入时,需要指定输入终止符,否则输入将被当作here String文本,而非document。(4).System.in字节流默认一直处于打开状态,可不用对其close(),但如果close()了,后续将不能使用in流。 例如,以字节输入流读取输入,此时只能输入ascii码中的符号。如果需要读取中文字符,使用字节流则需要加很多额外的代码来保证中文字符的字节不会被切分读取。
  1. import java.io.*;
  2. publicclassKeyB{
  3. publicstaticvoidmain(String[] args)throws IOException {
  4. InputStream in= System.in;
  5. intch = in.read();
  6. System.out.println(ch);
  7. intch1 = in.read();
  8. System.out.println(ch1);
  9. intch2 = in.read();
  10. System.out.println(ch2);
  11. intch3 = in.read();
  12. System.out.println(ch3);
  13. intch4 = in.read();
  14. System.out.println(ch4);
  15. }
  16. }
复制代码
以上示例中,将读取键盘上输入的5个字节,例如输入"ab"回车后,将输出"ab\r"的ascii码(97-98-13-10),并继续等待输入下一个字节才退出。 要想一次性读取一行,可以将它们读取到字节数组中,并以回车符、换行符判断一行读取完毕,再将字节数组转换为字符串输出。虽然用字节流能够完成这样的操作,但显然,如果使用字符流,则更轻松。
  1. importjava.io.*;
  2. public
  3. classKeyB{
  4. publicstaticvoidmain(String[] args)throwsIOException {
  5. //InputStream in = System.in //键盘输入字节流 //InputStreamReader isr = new InputStreamReader(in); //桥梁,将字节流转换为字符流 //BufferedReader bufr = new BufferedReader(isr); //以BufferReader的readLine()读取行 BufferedReader bufr = newBufferedReader(newInputStreamReader(System.in));
  6. String line = null;
  7. //line = bufr.readLine();System.out.println(line); //输入一行立即退出 while((line = bufr.readLine())!=null) { //循环输入多行,直到输入终止符时才退出 if(line.equals("quit")) { //定义键盘输入终止符quit break;
  8. }
  9. System.out.println(line);
  10. }
  11. }
  12. }
复制代码
注意,
  1. BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
复制代码
几乎是涉及到键盘录入时的一条固定代码,属于可以直接背下来的。 以下是一个示例,需求是将键盘输入的结果保存到文件d:\myjava\a.txt中。
  1. importjava.io.*;
  2. public
  3. classKey2File{
  4. publicstaticvoidmain(String[] args)throwsIOException {
  5. //1.源:键盘输入,目标:文件 //2.输入中可能包含中文字符,所以采用字符流,输出也采用字符流 //3.需要使用Buffered流来提高效率并使用其提供的行操作方法 BufferedReader bufr = newBufferedReader(newInputStreamReader(System.in));
  6. BufferedWriter bufw = newBufferedWriter(newFileWriter("d:/myjava/a.txt"));
  7. String line = null;
  8. while((line=bufr.readLine())!=null) {
  9. if(line.equals("quit")) {
  10. break;
  11. }
  12. bufw.write(line);
  13. bufw.newLine();
  14. bufw.flush();
  15. }
  16. bufw.close();
  17. }
  18. }
复制代码
注:若您觉得这篇文章还不错请点击右下角推荐,您的支持能激发作者更大的写作热情,非常感谢!
该用户未在地球留下任何的痕迹

本版积分规则

QQ|小黑屋|帮助|IT技术擎 ( 沪ICP备15054863号  

GMT+8, 2018-12-19 06:03

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表