返回介绍

10.5.4 从标准输入中读取数据

发布于 2024-10-15 23:56:23 字数 1149 浏览 0 评论 0 收藏 0

以 Unix 首先倡导的“标准输入”、“标准输出”以及“标准错误输出”概念为基础,Java 提供了相应的 System.in,System.out 以及 System.err。贯这一整本书,大家都会接触到如何用 System.out 进行标准输出,它已预封装成一个 PrintStream 对象。System.err 同样是一个 PrintStream,但 System.in 是一个原始的 InputStream,未进行任何封装处理。这意味着尽管能直接使用 System.out 和 System.err,但必须事先封装 System.in,否则不能从中读取数据。

典型情况下,我们希望用 readLine() 每次读取一行输入信息,所以需要将 System.in 封装到一个 DataInputStream 中。这是 Java 1.0 进行行输入时采取的“老”办法。在本章稍后,大家还会看到 Java 1.1 的解决方案。下面是个简单的例子,作用是回应我们键入的每一行内容:

//: Echo.java
// How to read from standard input
import java.io.*;

public class Echo {
  public static void main(String[] args) {
    DataInputStream in =
      new DataInputStream(
        new BufferedInputStream(System.in));
    String s;
    try {
      while((s = in.readLine()).length() != 0)
        System.out.println(s);
      // An empty line terminates the program
    } catch(IOException e) {
      e.printStackTrace();
    }
  }
} ///:~

之所以要使用 try 块,是由于 readLine() 可能“掷”出一个 IOException。注意同其他大多数流一样,也应对 System.in 进行缓冲。

由于在每个程序中都要将 System.in 封装到一个 DataInputStream 内,所以显得有点不方便。但采用这种设计方案,可以获得最大的灵活性。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文