1.功能简介

将文本文件中的英文转换为对应的中文

词库如下:

java performance 翻译 java翻译程序_java

源文件:

java performance 翻译 java翻译程序_字符串_02

翻译后的文件:

java performance 翻译 java翻译程序_java_03

输入源文件路径,将翻译后的内容输出到result.txt文件中。

2.重要技术

(1)如何载入词库文件

   因为词库文件是 kry=value的形式,所有可以用到Properties类的load函数

(2)如何将源文件中的一段英文分理处一个个的单词

可以用StringTokenizer类

(3)如何进行翻译

直接用中文替换相应的英文

3.项目结构

java performance 翻译 java翻译程序_java_04

(4)代码编写

①FileLoader类


/*文件载入类,将源文件中的内容输出到字节数组中*/
package zhidao3_2;
import java.io.FileInputStream;
import java.io.File;
public class FileLoad {
	public static byte[] getContent(String fileName)throws Exception{
		File file = new File(fileName);
		if(!file.exists()){
			System.out.println("输入有误,该文件不存在");
		}
		FileInputStream fis = new FileInputStream(file);
		int length = (int)file.length();
		byte[] data = new byte[length];
		fis.read(data);
		fis.close();
		return data;
	}
}

②TxtTrans类


/*文件翻译,将字节数组变为字符串,分离出其中的单词,然后翻译为对应的汉字,去掉空格,变为字符串*/
package zhidao3_2;
import java.util.StringTokenizer;
import java.util.Properties;
import java.io.*;
public class TxtTrans {
	private Properties pps;
	public TxtTrans(){
		loadCiku();
	}
	public void loadCiku(){
		pps = new Properties();
		try{
			FileReader fis = new FileReader("g:/ciku.txt");//以字符载入时没有乱码,以字节载入时出现了乱码
			pps.load(fis);
			fis.close();
		}catch(Exception ex){
			ex.printStackTrace(System.out);
			System.out.println("载入词库时出错");
		}
		//System.out.println(pps.get("china")) ;
		
	}
	public  String trans(byte[] data){
		String srcTxt = new String(data);
		String dstTxt = srcTxt;
		
		String delim = " ,.!\n\t";		//分隔符可以指定
		StringTokenizer st = new StringTokenizer(srcTxt,delim,false);
		String sub,lowerSub,newSub;
		//int i=0;
		while(st.hasMoreTokens()){
			sub = st.nextToken();	//分割出的一个个单词

			lowerSub = sub.toLowerCase();//统一转换为小写,这样可以简化词库
			//System.out.println(sub);
			newSub = pps.getProperty(lowerSub);
			if(newSub != null){		//如果找到了匹配的汉字,则进行替换
				dstTxt = dstTxt.replaceFirst(sub, newSub);		//只替换第一个,即只替换了当前的字符串,否则容易造成ch我na的例子
				//System.out.println(dstTxt);
			}
		}
		
		return dstTxt.replaceAll(" ", "");		//去掉空格
	}
	
	
	
}



③FileOutput类


/*将字符串输出到文件*/
package zhidao3_2;
import java.io.File;
import java.io.FileOutputStream;
public class FileOutput {
	public static void output(String text,String fileName)throws Exception{
		File file = new File(fileName);
		FileOutputStream fos = new FileOutputStream(file);
		fos.write(text.getBytes());
		fos.close();
	}
}



④主函数


package zhidao3_2;
import javax.swing.JOptionPane;
public class Main {

	public static void main(String[] args)  {
		String srcFile = JOptionPane.showInputDialog("输入源文件");
		try{
			byte[] data = FileLoad.getContent(srcFile);
			TxtTrans tt = new TxtTrans();
			String dString = tt.trans(data);
			FileOutput.output(dString, "g:/result.txt");
		}catch(Exception ex){
			JOptionPane.showMessageDialog(null, "操作异常");
			System.exit(1);
		}
		
		
		JOptionPane.showMessageDialog(null, "翻译完毕");
	}

}



最后的项目结构如下:



java performance 翻译 java翻译程序_System_05