您的位置:首页 > 其它

读取一个.txt文件并计数每个单词出现的次数

2008-05-26 14:33 204 查看

//求一个方法。该方法读取一个.txt文件并计数每个单词出现的次数,不区分大小写。各种标号和数字除外。注意效率!


//例如:txt文件的内容是:I like Java./?? I've study [ java for 1 year.


//输出:i 2


// like 1


// java 2


// ve 1


// for 1


// year 1




import java.io.*;


import java.util.*;






public class Test1 ...{




public static void main(String[] a) ...{


InnerCountWords icw = new InnerCountWords("words.txt");


Map<String,Integer> result = icw.getResult(); //开始统计


System.out.println(result);


}


}






class InnerCountWords ...{


private String fileName;






public InnerCountWords(String fileName) ...{


this.fileName = fileName;


}






public Map<String,Integer> getResult() ...{


Map<String,Integer> result = new HashMap<String,Integer>();


FileInputStream fis = null;






try ...{


fis = new FileInputStream(fileName); //打开文件


int in = 0; //读入的字符


StringBuffer sb = new StringBuffer(); //缓存单词


in = fis.read(); //读入


boolean notEnd = true; //是否是文件尾






while(notEnd) ...{




if(-1 == in) ...{


notEnd = false; //如果到文件尾,结束while


}




if(Character.isLetter((char)in)) ...{


sb.append((char)in); //判断读入的是否是字母,如果是,就追加到StringBuffer




} else ...{


//否则就判断StringBuffer里面是否有单词存在,如果有就加入到Map中




if(sb.length() > 0) ...{




if(result.containsKey(sb.toString())) ...{


result.put(sb.toString(), result.get(sb.toString()) + 1);




} else ...{


result.put(sb.toString(),1);


}


}


sb = new StringBuffer(); //重新设置StringBuffer


}


in = fis.read(); //读入字符


}


return result;




} catch (IOException e) ...{


e.printStackTrace();


}




finally ...{




try ...{


fis.close();




} catch (IOException e) ...{


e.printStackTrace();


}


}


return null;


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐