欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

85.IO操作入门

程序员文章站 2022-04-28 21:19:58
...

多数应用程序在运行过程中要与用户进行交互,通常的交互方式是:用户使用键盘作为标准输入设备向程序中输入数据,程序利用计算机显示器屏幕做为标准输出设备显示输出数据。这种程序被称为控制台应用程序,这种输入/输出被称为标准I/O或控制台I/O(Input/Output)。


java.lang.System类的三个类成员提供了有关的I/O操作功能:


System.out提供向“标准输出”写出数据的功能,out是System中的一个static final的PrintStream类型变量,它会被初始化关联到运行Java程序的终端窗口。可以通过System类的setOut()方法来改变默认的标准输出流;
System.in提供从“标准输入”读入数据的功能,in是System类中的一个static final的InputStream类型变量,它会被初始化关联到用户键盘。可以通过System类的setIn()方法来改变默认的标准输入流;
System.err提供向“标准错误输出”写出数据的功能。通常情况下,System.err使用方法与System.out相同,用于向标准的错误设备输出错误信息,但很少使用。同样可以使用System类的setErr()方法来改变默认的标准错误输出流。


在这里,用到了输入/输出流的概念,关于流的编程,将在后续中详细讲解。
我们来看一个接受键盘输入的Java应用程序。

import java.io.*;

public class KeyboardInput {
 public static void main(String args[]) {
  String s;
  // 创建一个BufferedReader对象从键盘逐行读入数据
  InputStreamReader ir = new InputStreamReader(System.in);
  BufferedReader in = new BufferedReader(ir);

  System.out.println("Unix: Type ctrl-d or ctrl-c to exit."
    + "\nWindows: Type ctrl-z or ctrl-c to exit.");

  try {
   // 每读入一行,向标准输出设备输出
   while ((s = in.readLine()) != null) {
    System.out.println("Read: " + s);
   }

   // 关闭流,这步动作在对流的操作完成后一定要做。
   in.close();
  } catch (IOException e) { // Catch any IO exceptions.
   e.printStackTrace();
  }
 }
}


编译运行这个程序,它将阻塞等待输入,我们可以通过键盘向它输入数据,这个程序从标准输入中逐行读取输入的数据,然后将它们显示到标准输出中(此处是默认的屏幕)。

 

在Windows命令行下可以通过按下“Ctrl+C”来终止这个应用的运行。

 

下面我们来看如何向标准设备输出数据。其实在前面的章节中,我们已经多次用到这个功能,在此作一个总结。


通常我们使用System.out.println()/System.out.print()两个常用的方法向标准设备输出。println()方法将参数打印出来,并加上”\n”字符,也就是换一个新行。而print()方法只打印参数,但不加新行。


另外,System.out.print()和System.out.println()方法对多数简单数据类型 (boolean, char, int, long, float, double)和char[], Object以及String进行了重载,使得它们可以向外输出所有的数据类型数据。


需要注意的是,print(Object)或println(Object)将会调用Object对象的toString()方法,输出表示对象的字符串。


下面我们来看一个项标准设备输出数据的例子。

public class Echo {
 public static void main(String args[]) {
  int a = 100;
  boolean b = true;
  System.out.print("echo an int primitive type data:");
  System.out.println(a);
  System.out.print("echo a boolean primitive type data:");
  System.out.println(b);
  System.out.print("echo an object:");
  Object o = new Object();
  System.out.println(o);
 }
}


在这个程序中,向标准输出设备输出两种简单类型的数据:int和 boolean,以及一个Object,正如上面所述,System.out的这些println()方法都已经针对不同的数据类型进行了重载,所以可以直接使用。而对于引用类型数据,它会调用该对象上的toString()方法,将这个方法返回的表示该对象的字符串打印出来。