march alex's blog
hello,I am march alex
posts - 52,comments - 7,trackbacks - 0
在之前我写过一个英汉翻译的java小程序EnglishChineseTranslater,今天在原来的基础上加了一些改进。
TranalateMaster类用于翻译一个文件内的所有单词。
通过之前讲到的文件操作进行文件内容的读取,再通过StringTokenizer来分词,最后一个一个的翻译。
这里有一个优化,就是通过HashMap来去重,这样可以优化文件中一些单词重复出现所消耗的时间。translateAll函数翻译并直接输出,translateAllLocal函数翻译并保存到本地。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.StringTokenizer;


public class TranslateMaster {
    private static HashMap<String, String> map = null;
    
    public static void getWords(String filename) throws Exception {
        map = new HashMap<String, String>();
        BufferedReader reader = new BufferedReader(new FileReader(filename));  
        String line = null;
        while((line = reader.readLine()) != null){
            StringTokenizer st = new StringTokenizer(line, ",.-!? \t");
            while(st.hasMoreElements()) {
                String key = st.nextToken();
                if(map.containsKey(key) == false) {
                    try {
                        String value = EnglishChineseTranslater.getWordName(key) + ": " + EnglishChineseTranslater.getTranslation(key);
                        map.put(key, value);
                    } catch (Exception e) {
                        continue;
                    }
                }
            }
        }
        reader.close();
    }
    
    public static void translateAll(String filename) throws Exception {
        getWords(filename);
        BufferedReader reader = new BufferedReader(new FileReader(filename));  
        String line = null;
        while((line = reader.readLine()) != null){
            StringTokenizer st = new StringTokenizer(line, ",.-!? \t");
            while(st.hasMoreElements()) {
                String key = st.nextToken();
                System.out.println(map.get(key));
            }
        }
        reader.close();
    }
    
    public static void translateAllLocal(String inputfilename, String outputfilename) throws Exception {
        getWords(inputfilename);
        BufferedReader reader = new BufferedReader(new FileReader(inputfilename));  
        BufferedWriter writer  = new BufferedWriter(new FileWriter(outputfilename));
        String line = null;
        while((line = reader.readLine()) != null){
            StringTokenizer st = new StringTokenizer(line, ",.-!? \t");
            while(st.hasMoreElements()) {
                String key = st.nextToken();
                writer.write(map.get(key) + "\r\n");
                //System.out.println(map.get(key));
            }
        }
        writer.close();
        reader.close();
    }
    
    
    public static void main(String[] args) throws Exception {
        translateAll("D:\\test.txt");
        translateAllLocal("D:\\test.txt", "D:\\output.txt");
    }
}
输入文件中的内容为:
an apple a day,keep healthy a way.
输出结果显示为:
an: 一(在元音字母前代替不定代词a);一任一某一;一个
apple: 苹果;苹果树;苹果公司
a: 一(个);每一(个);任一(个)
day: 一天;白天;时期;节日
keep: 保持;保留;遵守;阻止
healthy: 健康的;健全的;大量的;有益于健康的
a: 一(个);每一(个);任一(个)
way: 道路;方法;方向;某方面
posted on 2015-03-04 14:21 marchalex 阅读(224) 评论(0)  编辑  收藏 所属分类: java小程序

只有注册用户登录后才能发表评论。


网站导航: