TranalateMaster類用于翻譯一個(gè)文件內(nèi)的所有單詞。
通過之前講到的文件操作進(jìn)行文件內(nèi)容的讀取,再通過StringTokenizer來分詞,最后一個(gè)一個(gè)的翻譯。
這里有一個(gè)優(yōu)化,就是通過HashMap來去重,這樣可以優(yōu)化文件中一些單詞重復(fù)出現(xiàn)所消耗的時(shí)間。translateAll函數(shù)翻譯并直接輸出,translateAllLocal函數(shù)翻譯并保存到本地。
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");
}
}
輸入文件中的內(nèi)容為: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.
輸出結(jié)果顯示為:
an: 一(在元音字母前代替不定代詞a);一任一某一;一個(gè)
apple: 蘋果;蘋果樹;蘋果公司
a: 一(個(gè));每一(個(gè));任一(個(gè))
day: 一天;白天;時(shí)期;節(jié)日
keep: 保持;保留;遵守;阻止
healthy: 健康的;健全的;大量的;有益于健康的
a: 一(個(gè));每一(個(gè));任一(個(gè))
way: 道路;方法;方向;某方面