import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class EmailSpider {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\yongjian\\Desktop\\javase版的植物大战僵尸联机版送出源码 - Java - Java SE.htm"));
String line="" ;
try {
while((line=br.readLine())!=null){
parse(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } private static void parse(String line) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\yongjian\\Desktop\\抓取的Email.txt"));
Pattern p = Pattern.compile("\\w[.-]]+@[\\w[.-]+\\]+");
Matcher m = p.matcher(line);
while (m.find()){
bw.write(m.group());
bw.newLine();
}
}catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}}
http://topic.csdn.net/u/20110816/20/bc7812c1-39a6-476f-900b-888579a5a72f.html
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\yongjian\\Desktop\\抓取的Email.txt"));
你每次都重新new,也就是每次都重新打开了这个文件,每次打开就会清空前面输入的内容,所以,只要最后一行没有匹配的,那么这个文件就没动了。
还有,输入流和输出流要注意关闭.import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class EmailSpider {
public static void main(String[] args) throws IOException {
try {
BufferedReader br = new BufferedReader(new FileReader("d:/aa.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\抓取的Email.txt"));
String line="" ;
try {
while((line=br.readLine())!=null){
parse(line, bw);
}
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} private static void parse(String line, BufferedWriter bw) {
try {
Pattern p = Pattern.compile("\\w*+@\\w+[.]\\w+");
Matcher m = p.matcher(line);
while (m.find()){
bw.write(m.group());
bw.newLine();
}
}catch (IOException e1) {
e1.printStackTrace();
} }
}