邮件抓取器的实现

朋友要一个邮件抓取器,边查边写了一个:

三个类

1.MyFrame,就是一些布局和事件。

 

package com.zhuzhu;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;




public class MyFrame  {
	public static void main(String args[]){
		TextField tfin,tfout;	
		Frame f = new Frame();
		tfin = new TextField(10);
		tfin.setText("输入路径");
		tfout = new TextField(10);
		tfout.setText("输出路径");
		Button b1 = new Button("提取邮件地址");
		Monitor monitor = new Monitor(tfin,tfout);
		b1.addActionListener(monitor);
		FlowLayout layout =new FlowLayout();
		f.setLayout(layout);
		f.add(tfin);
		f.add(tfout);
		f.add(b1);
		f.setLocation(300, 300);
		f.setSize( 300,80);
		f.setBackground( Color.white);
		f.setResizable(true);
		f.setVisible( true);
	}

}

 2.Monitor监听器类,对事件进行监听。

 

package com.zhuzhu;

import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

class Monitor implements ActionListener {
	TextField tfin,tfout;
	public Monitor(TextField tfin,TextField tfout){
		this.tfin = tfin;
		this.tfout = tfout;
	}
	MyFrame tf = null;
	
	public Monitor(MyFrame tf) {
		this.tf = tf;
	}
	
    public void actionPerformed(ActionEvent e) { 	
    	String indir = (String)tfin.getText();
    	String outdir = (String)tfout.getText();
    	System.out.println(indir);
    	System.out.println(outdir);
    	Spider sp = new Spider();
    	try {
			sp.readfile(indir,outdir);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}  
    }
  
}

 3.Spider匹配地址的作用,system.out重定向的自定的流。

 

package com.zhuzhu;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Spider {

	public void readfile(String indir,String outdir) throws IOException {
		PrintStream out = new PrintStream(outdir);
		try {
			BufferedReader br = new BufferedReader(new FileReader(indir));
			String line = "";
			StringBuffer sb = new StringBuffer();
			while ((line = br.readLine()) != null) {
				sb.append(line);
			}
			spider(sb.toString(), out);
		} catch (Exception e) {
		}

	}

	private static void spider(String line, PrintStream out) throws IOException {
		try {
			String regx = "[\\w[.-]]+@[\\w[.-]]+\\.[\\w]{3}";
			Pattern p = Pattern.compile(regx);
			Matcher m = p.matcher(line);
			System.setOut(out);
			while (m.find()) {
				System.out.append(m.group());
				System.out.println();
			}
			out.close();
		} catch (Exception e) {
		}
	}

}

 运行了一下,貌似可以用。可能有很多bug,抛砖引玉了。

付上代码。下一步写如何自动转发。

你可能感兴趣的:(java,java监听,邮件抓取)