需求:讀取txt文件 <Think in Java中文版 > 統計每個字符出現的次數。
package com.wh.test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Collections; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class Work1 { public static void main(String[] args) { fread("D:\\MyEclipse\\worktest\\src\\Think in Java中文版.txt"); } // 讀取文件: public static void fread(String fileurl) { File file = new File(fileurl); BufferedReader bfr = null; try { bfr = new BufferedReader(new FileReader(file)); String tem = null; String value = ""; while ((tem = bfr.readLine()) != null) { value = value + tem; } System.out.println(value); // 將讀取的字符串轉換成字符數組: char[] c = value.toCharArray(); // 定義一個map來存儲結果: // HashMap<Character,Integer> tm = new // HashMap<Character,Integer>(Collections.reverseOrder()); TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>(Collections.reverseOrder());// TreeMap可排序(傳入一個反轉比較器) for (int i = 0; i < c.length; i++) { char charSrc = c[i]; if (tm.containsKey(charSrc)) { // 判斷該鍵的值是否存在 int count = tm.get(charSrc); tm.put(charSrc, count + 1); } else { tm.put(charSrc, 1); } } // 取出Map中的鍵和值 Iterator<Map.Entry<Character, Integer>> titer = tm.entrySet().iterator(); while (titer.hasNext()) { Map.Entry<Character, Integer> map = titer.next(); char key = map.getKey(); int valu = map.getValue(); System.out.println(key + "出現過" + valu + "次!"); } } catch (Exception e) { System.err.println("文件讀取錯誤"); } finally { try { if (bfr != null) { bfr.close(); } } catch (Exception e2) { System.err.println("文件關閉錯誤"); } } } }