📅  最后修改于: 2023-12-03 14:57:43.941000             🧑  作者: Mango
在本教程中,我们将介绍如何编写Java程序来读取给定文件中存在的所有电子邮件地址。我们将使用Java内置的正则表达式功能来识别电子邮件地址。
首先,我们需要创建一个Java项目。以下是创建Java项目的步骤:
接下来,我们需要创建一个Java类。以下是创建Java类的步骤:
现在,我们将通过以下步骤来编写Java代码:
以下是完整的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中。