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仅用于读取数据,而扫描仪类用于读取和解析数据。

