日期:2014-05-20  浏览次数:20868 次

java菜鸟求助~这个程序的目的是为了读取一个文件夹中的文件,把at替换成@,找出邮箱并且把所有的邮箱打印到email文件中,但是有两个问题解决不了
第一个问题:邮箱的正则式是什么,网上有很多邮箱正则式,但是都不适用。要读文件的内容是很多字符串,比如所<fjien>¥……fjiefne mail:joe at cs.stanford.edu(fenix#&(&(^&%%fjien fneifb...
第二个问题就是我将结果输入到email文件中去的时候不能输入完整的结果,往往只能打印最后一个字符串结果

import java.io.*;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class exercise6 {
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
  
  String path="C:\\Users\\Administrator\\Desktop\\新建文件夹";
 
  File file1=new File("email.txt");//存储结果的文件email
  new PrintWriter(file1);//没有email文件的话建立一个
  
  File fi=new File(path);
  //path是要更改的文件所在的文件夹
  File[] file=fi.listFiles();
  System.out.println(file.length);//显示文件夹下的文件数
  
  for (int i = 0; i < file.length; i++) {
String filepath=file[i].getAbsolutePath();

    String cont = read(filepath);
    //读取一个文件的内容存放在cont中
 
    cont = cont.replaceAll(" at ", "@");
    //更新源文件
    
    
    write(findEmail(cont),file1);
    System.out.print(findEmail(cont));//控制台显示筛选的完整的结果
    //找出邮箱字符串并且将结果存放在file1中
    
  }
  
}


public exercise6() {

}


public static String read(String path) {
File file = new File(path);
StringBuffer res = new StringBuffer();
  String line = null;
  try {
   BufferedReader reader = new BufferedReader(new FileReader(file));
   while ((line = reader.readLine()) != null) {
    res.append(line + "\n");//读出来的文本内容存在res里
   }
   reader.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return res.toString();
 }


 public static void write(String cont, File dist) {
 try {
 PrintWriter output=new PrintWriter(dist);
 output.print(cont);
 output.close();
 } 
 catch (IOException e) {
   e.printStackTrace();
 }
 }

 public static String findEmail(String cont){//以下邮箱正则式有待搞清楚
 Pattern pattern = Pattern.compile("@.*");
 Matcher matcher = pattern.matcher(cont);
 StringBuffer record=new StringBuffer();
 
 while(matcher.find()){
 record.append(matcher.group()+" ");
 }
 
 return record.toString();
 }



}