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

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

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

本文介绍如何编写一个Java程序来读取给定文件中的所有电子邮件。我们将使用Java内置的文件读取API和正则表达式来解析电子邮件地址。

程序功能

该程序将读取给定文件中的所有内容,并提取出所有有效的电子邮件地址。这些电子邮件地址将被存储在一个Java List对象中,并打印到控制台中。

实现步骤
  1. 首先,我们需要使用Java的文件读取API来读取给定文件。
String filename = "path/to/file.txt";
BufferedReader reader = new BufferedReader(new FileReader(filename));
  1. 接下来,我们需要编写一个正则表达式来解析电子邮件地址。在这个例子中,我们将使用一个简单的正则表达式来匹配电子邮件地址。
String regex = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b";
  1. 现在我们可以遍历文件内容,并使用正则表达式来提取出所有匹配的电子邮件地址。
List<String> emails = new ArrayList<String>();
String line;
while ((line = reader.readLine()) != null) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(line);
    while (matcher.find()) {
        String email = matcher.group();
        emails.add(email);
    }
}
  1. 最后,我们可以打印出所有提取出来的电子邮件地址。
for (String email : emails) {
    System.out.println(email);
}
完整代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReadEmailsFromFile {

    public static void main(String[] args) {
        String filename = "path/to/file.txt";
        List<String> emails = getEmailsFromFile(filename);
        for (String email : emails) {
            System.out.println(email);
        }
    }

    public static List<String> getEmailsFromFile(String filename) {
        List<String> emails = new ArrayList<String>();
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(filename));
            String line;
            String regex = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b";
            while ((line = reader.readLine()) != null) {
                Pattern pattern = Pattern.compile(regex);
                Matcher matcher = pattern.matcher(line);
                while (matcher.find()) {
                    String email = matcher.group();
                    emails.add(email);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return emails;
    }

}
总结

在此我们完成了一个简单的Java程序,它可以读取给定文件中的所有电子邮件地址。我们使用Java内置的文件读取API和正则表达式来解析电子邮件地址。这个程序可以为日常工作中需要处理大量电子邮件地址的程序员提供帮助。