io流输出文件

计算在文章中的最多的单词(《飘》)

package piao;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class W2 {
    public static int n=0;
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String s;
        String fileName1 = "src/《飘》英文版.txt";
        String fileName2 = "src/fenxijiegou.txt";
        try {
            BufferedReader br = new BufferedReader(new FileReader(fileName1));
            BufferedWriter bw = new BufferedWriter(new FileWriter(fileName2));
            StringBuffer sb = new StringBuffer();
            //将文件内容存入StringBuffer中
            while((s = br.readLine()) != null) {
                sb.append(s);
            }
            String str = sb.toString().toLowerCase();
            //分隔字符串并存入数组
            String[] elements = str.split("[^a-zA-Z0-9]+");
            int count = 0;
            Map<String, Integer> myTreeMap = new TreeMap<String, Integer>();
            //遍历数组将其存入Map<String, Integer>中
            for(int i = 0; i < elements.length; i++) {
                if(myTreeMap.containsKey(elements[i])) {
                    count = myTreeMap.get(elements[i]);
                    myTreeMap.put(elements[i], count + 1);
                }
                else {
                    myTreeMap.put(elements[i], 1);
                }
            }                                          
            System.out.println("单词统计的结果请见当前目录fenxijiegou.txt文件");
            //将map.entrySet()转换成list
            List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(myTreeMap.entrySet());
            //通过比较器实现排序
            Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
                //降序排序
                public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                    return o2.getValue().compareTo(o1.getValue());
                }
            });
            int num = 1;
            //将结果写入文件
            for(Map.Entry<String, Integer> map : list) {
                if(num <= 10) {
                    bw.write("出现次数第" + num + "的单词为:" + map.getKey() + ",出现频率为" + map.getValue() + "次");
                    bw.newLine();
                    System.out.println(map.getKey() + ":" + map.getValue());
                    num++;
                }
                else break;
            }
            br.close();
            bw.close();
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定文件!");
        } catch (IOException e) {                                    
            System.out.println("文件读取错误!");
        }
    }
}
   

 

posted @ 2021-11-24 22:04  清梦韶华  阅读(80)  评论(0编辑  收藏  举报