📜  如何使用Java从文本文档中提取内容?(1)

📅  最后修改于: 2023-12-03 15:23:58.908000             🧑  作者: Mango

如何使用Java从文本文档中提取内容?

在Java中,我们可以使用多种方法从文本文档中提取内容。下面将介绍几种常用的方法。

1. 使用Scanner类

Scanner类是Java标准库中提供的一个类,可用于从各种数据源读取输入。您可以使用它从文本文件中读取文本行并提取所需的数据。 下面是使用Scanner类从文本文件中提取内容的示例代码:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
 
public class ReadTextFile {
    public static void main(String[] args) {
        try {
            File file = new File("filename.txt");
            Scanner sc = new Scanner(file);
            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                // 在此处添加对该行的操作
                System.out.println(line);
            }
            sc.close();
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到");
            e.printStackTrace();
        }
    }
}

代码解释:

  • 从文件中读取数据需要使用Java的File类。您需要使用此类创建表示您要读取的文件的对象。

  • Scanner类的构造函数被初始化为读取该File对象所表示的文本文件的内容。

  • hasNextLine()方法用于检查文件是否还有另一行可读取。只要还有一行可读取的文本,就会打印出文本。若没有任何文本可读取,则跳出while循环。

重要提示:

  • 需要注意的是,Scanner类中的next()和nextLine()方法默认使用空格作为分隔符。如果您的文件包含以空格分隔的单词或列,那么这两种方法将无法返回您所需的单词或列。在这种情况下,最好使用Java提供的其他方法,如StringTokenizer。
2. 使用BufferedReader类

BufferedReader类可用于从字符输入流中读取文本并缓冲字符,以便更有效地读取。使用BufferedReader类从文本文件中读取文本的示例代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
public class ReadTextFile {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("filename.txt"));
            String line = reader.readLine();
            while (line != null) {
                // 在此处添加对该行的操作
                System.out.println(line);
                line = reader.readLine();
            }
            reader.close();
        } catch (IOException e) {
            System.out.println("读取文件时出现错误");
            e.printStackTrace();
        }
    }
}

代码解释:

  • 在此示例中,BufferedReader对象使用Java中的FileReader类来读取文本文件中的数据。

  • readLine()方法用于检查文件是否还有另一行可读取。只要还有一行可读取的文本,就会返回该行文本。若没有任何文本可读取,则返回null。

3. 使用Java 8中的Files类

Java 8提供了一种更简单的方法,可用于从文本文件中读取内容。使用Files类中的readAllLines()方法提取内容非常简单。下面是示例代码:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
 
public class ReadTextFile {
    public static void main(String[] args) {
        try {
            List<String> lines = Files.readAllLines(Paths.get("filename.txt"));
            for (String line : lines) {
                // 在此处添加对该行的操作
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("读取文件时出现错误");
            e.printStackTrace();
        }
    }
}

代码解释:

  • 在此示例中,路径是使用要读取的文本文件的名称创建的。readAllLines()方法从文本文件中读取所有行,并将其存储在名为“lines”的字符串列表中。

  • 您可以使用for循环遍历该字符串列表中的每个字符串,并执行所需的操作。

4. 使用Apache Common IO类库

Apache Common IO是一组非常有用的类库,可用于执行文件和流操作。使用Apache Common IO类库来提取文本文件中的内容非常简单,您只需使用它的FileUtils类即可。 这里是一个示例代码:

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
 
public class ReadTextFile {
    public static void main(String[] args) {
        try {
            String fileContents = FileUtils.readFileToString(new File("filename.txt"), "UTF-8");
            System.out.println(fileContents);
        } catch (IOException e) {
            System.out.println("读取文件时出现错误");
            e.printStackTrace();
        }
    }
}

代码解释:

  • 在此示例中,要读取的文件是使用Java的File类创建的。

  • readFileToString()方法用于读取文本文件的内容,并将该内容存储在名为“fileContents”的字符串中。

  • 您可以在catch块中自定义错误处理。如果文件无法打开或读取,则该方法会抛出IOException异常。

以上是从文本文档中提取内容的几种常用方法。您可以根据自己的喜好来选择其中一种或多种方法来提取文本文件中的内容。