其实这是实验课的一个课程设计,我把功能完善了一下,并强化了防错功能,于是就写成了下面这个程序。
想要做一个翻译软件的话,本文只是一个入门参考,这里面只给出一个简单的功能,即把一个纯英文的文件 翻译成相应的中文文件,并另外保存成一个新的文件。
笔者不想花费时间去写华丽的界面,只是简单地弹出一些输入框,有兴趣的朋友可以自己去美化或完善一下该软件。
package cn.ling.TestTranslate;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
/**
*
* 模拟文本翻译软件
* 注意:操作的源文件必须只由英文单词构成,否则会得到意想不到的结果
* @author lingyibin
*
*/
public class TestTranslate {
/**
* @param args
*/
public static void main(String[] args) {
translate();
}
/**
* 翻译的主要实现函数
*/
public static void translate(){
//得到源文件路径
String srcFileName = "";
srcFileName = javax.swing.JOptionPane.showInputDialog("请您 输入源文件路径!");
File srcFile = new File(srcFileName);
//源文件路径不合法
if(!srcFile.exists() || !srcFile.isFile()){
javax.swing.JOptionPane.showMessageDialog(null, "对不起,你输入的源文件路径不合法!");
}
//翻译后的文件名,首先得到新文件名,即在原文件名的后面加上"_translated",保留后缀名
int index = srcFileName.lastIndexOf(".");
String newFileName = srcFileName.substring(0,index) + "_translated" + srcFileName.substring(index);
//得到词库文件路径
String cikuFileName = "";
cikuFileName = javax.swing.JOptionPane.showInputDialog("请您 输入词库文件路径!");
File cikuFile = new File(cikuFileName);
//词库文件路径不合法
if(!cikuFile.exists() || !cikuFile.isFile()){
javax.swing.JOptionPane.showMessageDialog(null, "对不起,你输入的词库文件路径不合法!");
}
try {
String tmpStr = null;
String[] strs;
//新建一个缓冲流来读取词库文件
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(cikuFile)));
//用一个MAP来存放键值对
Map<String, String> mapTrn = new HashMap<String, String>();
while((tmpStr = br.readLine()) != null){ //如果未到末尾 且 读到的不是空行
if(!tmpStr.equals("")){
strs = tmpStr.split("=");
mapTrn.put(strs[0].toLowerCase(), strs[1]);
}
}
//新建一个字节流来读取源文件
FileInputStream fis = new FileInputStream(srcFile);
//新建一个Writer来写入翻译后的字符
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(newFileName));
int c;
tmpStr = "";
while((c = fis.read()) != -1){
if(!((c>='a' && c<='z') || (c>='A' && c<='Z'))){
if(mapTrn.get(tmpStr.toLowerCase()) != null){
osw.write(mapTrn.get(tmpStr.toLowerCase()).toCharArray());
tmpStr = "";
}
if(c != 32) osw.write(c);
}
else{
tmpStr += (char)c;
}
}
if(mapTrn.get(tmpStr.toLowerCase()) != null){
osw.write(mapTrn.get(tmpStr.toLowerCase()).toCharArray());
tmpStr = "";
}
osw.flush();
osw.close();
} catch (Exception e) {
//e.printStackTrace();
javax.swing.JOptionPane.showMessageDialog(null, "对不起,源文件读取时出错!");
}
}
}
然后得自己建一个词库,格式如下:
Love=爱
I=我
China=中国
我把这个程序相关的文件都上传到附件中了,有兴趣的朋友可以去测试测试!
分享到:
相关推荐
锻炼了自己的动手实践能力、查阅资料能力和自学能力,在这次毕业设计之前对于JAVA语言比较陌生,JBuilder2006也只是听说过,具体的内容几乎不懂,通过这次毕业设计我了解了JAVA语言的大体体系,掌握了JBuilder2006...
基于JAVA的推箱子游戏设计软件程序源码+word毕业论文文档. 基于JAVA的推箱子游戏系统主要用于实现游戏推箱子功能,提供多种不同难度的关卡。本系统结构如下: (1)初始化模块: 该模块包括屏幕初始化和游戏第一关的...
小型证券术语解释及翻译系统可以完成证券术语解释及翻译,并且具有术语管理功能,有如下2个方面的目标: 1)证券术语一览,通过按术语首字母拼音...在毕业设计的环境指导下积极查阅学习书籍,提高自己知识层面,锻炼动手
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙,来自于手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse...
ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题...
特别是,我将实施虚拟机和一个编译器一种简单的类似Java的编程语言,我将开发一个基本的操作系统填补了高级语言和底层硬件平台之间的空白。 在此过程中,您将获得对应用计算机科学中众多主题的深刻而动手的理解, ...
IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者 杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的...