用java做一个简单的英文翻译程序

1.功能简介

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

词库如下:

用java做一个简单的英文翻译程序_第1张图片

源文件:

用java做一个简单的英文翻译程序_第2张图片

翻译后的文件:

用java做一个简单的英文翻译程序_第3张图片

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

2.重要技术

(1)如何载入词库文件

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

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

可以用StringTokenizer类

(3)如何进行翻译

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

3.项目结构

用java做一个简单的英文翻译程序_第4张图片

(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做一个简单的英文翻译程序_第5张图片

你可能感兴趣的:(java)