BufferedReader vs Console vs Scanner

问题描述 投票:0回答:3

我是 Java 新手,我想知道在控制台中读取用户输入的最佳选择是什么。据我所知,有以下三种方法:

  1. Console console = System.console();
  2. BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  3. Scanner reader = new Scanner(System.in);

我应该选择哪一个?为什么是那个而不是其他?

java java-io
3个回答
61
投票

缓冲阅读器

扫描仪

控制台

推荐:扫描仪

读取数字的方法非常有用(尽管在使用 nextInt() 等后跟 nextLine() 时要小心)。异常是未经检查的,因此您不必编写样板 try/catch 块。


4
投票

除了这些你还可以使用datainputstream等。

现在 BufferedReader 从字符输入流中读取文本,缓冲字符,以便高效读取字符、数组和行。可以指定缓冲区大小,也可以使用默认大小。默认值足够大,足以满足大多数用途。

Where Scanner 是一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。扫描器使用分隔符模式将其输入分解为标记,默认情况下与空格匹配。然后可以使用各种 next 方法将所得令牌转换为不同类型的值。 Scanner 用于从流的内容中解析 token,而 BufferedReader 只是读取流,不做任何特殊的解析。

另请检查以下链接,它一定会对您有所帮助.......

http://www.javawebtips.com/50474/


4
投票

Console 类以与平台无关的方式实现,以处理不同操作系统的控制台输入。所有操作系统都有一个控制台/外壳,但它们在实现上有很大不同。所以 Console 类为您提供了一个独立于 Java 平台的运行时类来访问密码输入等内容。

Scanner 用于从流的内容中解析 token,而 BufferedReader 只读取流,不做任何特殊的解析。

© www.soinside.com 2019 - 2024. All rights reserved.