Java Scanner类读取文件与输入详解

花开有时
花开有时
发布时间:2026-10-16 | 2人浏览过
原创

在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操作的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表