Java Scanner类读取文件与输入详解
在Java开发中,`java.util.Scanner` 是处理基础输入输出最常用的工具之一。它不仅适用于获取控制台交互数据,更常被用于读取本地文本文件。本文将通过具体代码示例,详细讲解如何构建 `Scanner` 对象以读取 `test.txt` 等文件内容,解析文件读取的循环逻辑,同时梳理针对不同数据类型(整型、浮点型、字符串)的控制台读取技巧。
使用Scanner类进行文件的读取
Scanner 类位于 java.util 包中。由于它提供了多种构造函数重载,既支持将 System.in 作为参数获取键盘输入,也支持传入 File 对象来解析文件。理解这一机制是使用该类处理不同数据源的关键。
第一步:获取控制台的输入
这是Scanner最基础的用法。通过实例化 new Scanner(System.in),可以将标准的输入流关联到Scanner对象。以下代码演示了如何循环接收5个数字:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i <= 5; i++) {
int temp = sc.nextInt(); // sc.nextInt()可以获取一个输入的数字
System.out.println(temp);
}
}
}
执行后,程序会在控制台等待用户逐行输入整数,运行结果界面如下:
第二步:对文件进行读取
要实现文件读取,首先需要准备一个测试文本文件。在项目根目录下创建 test.txt,并在其中写入若干行文本内容(见下图示例):
接下来编写代码,利用构造函数将文件路径传入 Scanner:
File file = new File("test.txt");
Scanner sc = new Scanner(file);
读取的核心逻辑在于使用 hasNext() 方法判断是否到达文件末尾。这与判断控制台是否有下一个输入类似,当 hasNext() 返回 true 时,调用 nextLine() 或 nextInt() 等方法即可提取内容:
while(sc.hasNext()) {
String temp = sc.nextLine();
System.out.println(temp);
}
将上述步骤整合,完整的文件读取代码如下。注意此处引入了 java.io.FileNotFoundException 处理包:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
try {
File file = new File("test.txt");
// System.out.println(file.getAbsolutePath());
Scanner sc = new Scanner(file);
while (sc.hasNext()) {
String temp = sc.nextLine();
System.out.println(temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
运行该程序,控制台输出的文本顺序和内容与原 test.txt 完全一致,证明读取成功:
Java读取各类信息(Scanner)
若需通过控制台读取不同类型的数据,需要调用不同的后缀方法。构建对象时务必导入库:import java.util.Scanner;。
以下是针对不同数据类型的读取方式:
- 字符串型:使用
.next()或.nextLine()。 - 整型:使用
.nextInt()。 - 双精度浮点型:使用
.nextDouble()。 - 字符型
char没有直接对应的 nextChar,通常通过先获取字符串再取首字符的方式:.next().charAt(0)。
import java.util.Scanner;
public class input {
public static void main(String[] args){
Scanner myscn = new Scanner(System.in);
//string型
String name = myscn.next();
//int型
int age = myscn.nextInt();
//double型
double score = myscn.nextDouble();
//char型
char num = myscn.next().charAt(0);
}
}以上就是Java Scanner类读取文件及输入的详细教程,更多关于Java I/O操作的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









