java中Scanner和BufferReader之间的区别
时间:2020-02-23 14:34:07 来源:igfitidea点击:
在本教程中,我们将在Java中看到Scanner和BufferReader之间的区别。
Java有两个类已用于读取文件很长一段时间。
这两个程序是 Scanner
和 BufferedReader
。
在本教程中,我们将在两个程序之间找到主要的差异和相似之处。
介绍
让我们先通过快速介绍 Scanner
和 BufferReader
程序。
Scanner
扫描仪类可用于通过从java.util包导入来用于用户输入。
用户可以使用Scanner类从System.in(来自命令行)的数字。
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
让我们尝试一个简单的例子来了解Scanner类的工作。
package com.mycompany.hellonetbeans; import java.util.Scanner; /** * * @author arti */ public class UseOfScanner { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String name = scan.next(); int num = scan.nextInt(); scan.close(); System.out.println("my name is: " + name); System.out.println("my lucky number is: " + num); } }
上述计划的输出将是:
FooBar 9 my name is: FooBar my lucky number is: 9
如果我们不想在该案例中读取终端并希望从给定文件读取,则可以使用Scanner类。
Scanner sc = new Scanner(new File("fileName")); while (sc.hasNextLine()){ System.out.println(sc.nextLine()); }
BufferedReader.
可以通过从java.io包来使用bufferedReader类。
它从任何输入流线读取字符。
如果要使用BufferedReader从文件读取,则需要使用适当的文件阅读器。
它可以使用ReadLine()逐行读取数据行。
BufferedReader Br =新BuffereReader(新Finereader("filename"));
BufferedReader缓冲区字符,并在有效的字符,数组,行等中读取它。
让我们通过一个例子来了解BufferedReader的运作
package com.mycompany.hellonetbeans; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author arti */ public class BufferedReaderExample { public static void main(String[] args) throws IOException { String line; try { BufferedReader br = new BufferedReader(new FileReader("foo.txt")); while ((line = br.readLine()) != null) { System.out.println(line); } } catch (FileNotFoundException ex) { Logger.getLogger(UseOfScanner.class.getName()).log(Level.SEVERE, null, ex); } }
上述代码的输出将是
Hi, this is an example. line 1 line 2 line 3
扫描仪和BufferedReader之间的区别
- 如果我们有一个我们不在乎的小应用程序
synchronization
和concurrency
,我们可以使用扫描仪类,而在线程安全的环境中BufferedReader
将是一个不错的选择。 Scanner
类具有较小的缓冲存储器,为1024个字符,而BufferedReader
具有8192个字符的默认缓冲存储器,也可以扩展。Scanner
类来自JDK 1.5
,所以支持JDK 1.5的旧应用程序无法使用扫描仪类。BufferedReader
类来自JavaJDK 1.1
,因此它支持使用旧版本的Java的应用程序。- 扫描仪类使用正则表达式在解析字符串中,默认情况下,空白空间可设置为分隔符,但我们可以设置任何其他分隔符。
BufferedReader
仅用于读取数据,而扫描仪类用于读取和解析数据。