📜  读取给定文件中存在的所有电子邮件的Java程序(1)

📅  最后修改于: 2023-12-03 14:57:43.941000             🧑  作者: Mango

读取给定文件中存在的所有电子邮件的Java程序

在本教程中,我们将介绍如何编写Java程序来读取给定文件中存在的所有电子邮件地址。我们将使用Java内置的正则表达式功能来识别电子邮件地址。

步骤
步骤1: 创建Java项目

首先,我们需要创建一个Java项目。以下是创建Java项目的步骤:

  1. 打开你的Java集成开发环境(IDE)。
  2. 点击“新建项目”或“新建项目”。
  3. 选择Java项目类型,然后点击“下一步”。
  4. 输入项目名称和路径。
  5. 点击“完成”。
步骤2: 创建Java类

接下来,我们需要创建一个Java类。以下是创建Java类的步骤:

  1. 打开你的Java集成开发环境(IDE)。
  2. 打开项目,右键单击“src”文件夹。
  3. 选择“新建类”或“新建Java类”选项。
  4. 输入类名称,然后点击“完成”。
步骤3: 编写Java代码

现在,我们将通过以下步骤来编写Java代码:

  1. 导入Java的File,FileNotFoundException,Scanner和Pattern类。
  2. 创建一个Scanner对象来读取文件数据。
  3. 创建一个Pattern对象来使用Java正则表达式捕获电子邮件地址。
  4. 对文件内容进行循环迭代,使用正则表达式匹配和捕获电子邮件地址。
  5. 将所有捕获的电子邮件地址添加到ArrayList中。
  6. 关闭Scanner对象。

以下是完整的Java代码片段:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReadEmailFromFile {
  public static void main(String[] args) {
    try {
      File file = new File("emails.txt");
      Scanner scanner = new Scanner(file);
      ArrayList<String> emails = new ArrayList<>();
      Pattern pattern = Pattern.compile("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b");
      while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        Matcher matcher = pattern.matcher(line);
        while (matcher.find()) {
          emails.add(matcher.group());
        }
      }
      scanner.close();
      System.out.println(emails);
    } catch (FileNotFoundException e) {
      System.out.println("File not found.");
      e.printStackTrace();
    }
  }
}
解释

我们使用Java的Scanner类和File类来读取文件。File类代表文件或目录路径的抽象表现形式,它的构造函数需要传递文件的名称或路径。

Scanner类用于从字符流中读取数据,并将数据转换为基本类型或字符串。我们使用Scanner的构造函数传递File对象,并使用hasNextLine()方法检查文件是否有下一行。如果有下一行,则使用nextLine()方法读取该行内容并存储在一个字符串变量中。

我们使用Java正则表达式来识别电子邮件地址。我们使用java.util.regex.Pattern类来创建一个Pattern对象,然后使用该对象创建Matcher对象。我们使用Pattern.compile()方法将正则表达式作为参数传递。

正则表达式中使用了\b表示开始或结束的边界,A-Z,a-z,0-9表示可出现在电子邮件地址的字符集合。\.[A-Z|a-z]{2,}表示.后面的字符集合,并且该集合至少出现两次。这是一种常见的电子邮件地址正则表达式。

然后,我们使用Matcher对象的find()方法来查找每行字符串中的所有匹配项。如果匹配,则使用Matcher对象的group()方法来获取匹配项的文本,并将其添加到ArrayList中。最后,我们调用scanner.close()方法关闭Scanner对象。

结论

我们已经编写了一个Java程序来读取给定文件中存在的所有电子邮件地址。我们使用Java内置的正则表达式功能进行电子邮件地址的识别。我们使用Scanner类和File类来读取文件,并将匹配的电子邮件地址存储在ArrayList中。