Scanner 类读取文件中的数据
发布时间: 2024-04-10 00:47:46 阅读量: 48 订阅数: 48
从文件读取数据
# 1. 【Scanner 类读取文件中的数据】
1. **介绍Scanner类**
- 1.1 Scanner类简介
- Scanner类是Java中的一个工具类,可以用来扫描指定的输入,例如读取文件、控制台输入等。
- 1.2 Scanner类的常见用法
- 主要用来获取基本数据类型和字符串,可以通过设置自定义的分隔符来解析输入。
### Scanner类简介
Scanner类是Java中的一个实用工具,主要用于对输入源进行扫描和解析。它可以从文件、字符串或输入流中获取基本数据类型和字符串,并且具有一些方便的方法,帮助我们更轻松地处理输入数据。
### Scanner类的常见用法
通过Scanner类,我们可以方便地读取各种类型的数据,包括整数、浮点数、字符串等。同时,Scanner类还提供了多种方法处理不同类型的输入,使得我们能够更灵活地操作数据。在读取文件数据时,Scanner类也能够帮助我们逐行读取内容,并且处理异常情况。
1. 使用Scanner类读取不同类型的数据
2. 设置自定义的分隔符解析输入
3. 逐行读取文件内容
4. 处理异常情况,捕获文件不存在异常和文件读取异常
5. 读取数字和字符,包括整数、浮点数、字符串等
6. 处理大型文件时,通过BufferedReader提高效率
通过以上常见用法,我们可以看到Scanner类的灵活性和便利性,适用于多种场景下的数据读取和处理。接下来,我们将具体讨论如何使用Scanner类读取文件中的数据。
# 2. 【Scanner 类读取文件中的数据】
2. **读取文本文件数据**
- 2.1 如何使用Scanner类读取文本文件
- 2.2 逐行读取文件内容
- 2.3 处理不同数据类型的输入
### 2.1 如何使用Scanner类读取文本文件
当需要读取文本文件中的数据时,Scanner类是一个非常便捷的工具。下面是一个简单的示例,展示如何使用Scanner类读取文件中的内容:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFileWithScanner {
public static void main(String[] args) {
try {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String data = scanner.nextLine();
System.out.println(data);
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found.");
}
}
}
```
**代码解释:**
- 首先导入所需的包,创建一个`File`对象来表示要读取的文件。
- 使用`Scanner`类实例化一个`scanner`对象,关联到文件。
- 通过`hasNextLine()`方法检查是否还有下一行,然后使用`nextLine()`方法读取每一行数据并输出。
- 最后记得关闭`Scanner`对象。如果文件未找到,会捕获`FileNotFoundException`异常。
**结果说明:**
这段代码将逐行读取名为`data.txt`的文本文件内容,并将其打印到控制台。如果文件不存在,将会输出`File not found.`提示。
### 2.2 逐行读取文件内容
接下来看一下如何逐行读取文件内容,并分别输出每行的行号和内容:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFileLineByLine {
public static void main(String[] args) {
try {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
int lineNumber = 1;
while (scanner.hasNextLine()) {
String data = scanner.nextLine();
System.out.println("Line " + lineNumber + ": " + data);
lineNumber++;
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found.");
}
}
}
```
**代码解释:**
- 在循环中使用`lineNumber`变量来记录当前行号,每次读取新的一行,行号加一。
- 输出格式化的字符串,包含行号和对应行的内容。
**结果说明:**
这段代码会读取文件中的每一行内容,并在每行前面加上行号进行输出。
#### 流程图示意
```mermaid
graph LR
A[开始] --> B{文件是否有下一行}
B --> |是| C[读取下一行内容]
B --> |否| D[结束]
C --> B
```
# 3. **处理异常情况**
在使用Scanner类读取文件时,我们需要处理可能出现的异常情况,例如文件不存在或文件读取异常。下面将介绍如何通过异常处理机制来应对这些情况。
1. **捕获文件不存在异常**
- 当要读取的文件不存在时,Java会抛出`FileNotFoundException`异常。我们可以通过`try-catch`块来捕获这一异常并进行处理。
```java
try {
File file = new File("sample.txt");
Scanner scanner = new Scanner(file);
// 读取文件内容
} catch (FileNotFoundException e) {
System.out.println("文件不存在,请检查文件路径是否正确。");
}
```
2. **捕获文件读取异常**
- 在读取文件过程中,可能会发生文件损坏或无法读取等异常情况,此时会抛出`InputMismatchExc
0
0