📄 cnword.java~53~
字号:
package org.zblog.zenghelper.dbtool;
import java.io.DataOutputStream;
import java.io.ByteArrayInputStream;
import java.util.Vector;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.DataInputStream;
/**
* <p>Title: ZEngHelper</p>
*
* <p>Description: Z英汉词典</p>
*
* <p>Copyright: Zcw Copyright (c) 2004</p>
*
* <p>Company: www.zblog.org Z动力</p>
*
* @author 朱传伟-ZCW
* @version 1.0
*/
public class CnWord {
public int rsId=-1;
public String word=null;
//存储EnDB库对应的Id
public Vector enRSId=new Vector();
public byte[]bytes=null;
/**
* 通过RMS中的Id进行构造,实际是为了从数据库中恢复该对象
* @param Id int
*/
public CnWord(int Id){
rsId=Id;
loadDB();
}
/**
* 传递数据单词word方式构造,该方式一般用在新添加单词时用到,
* 首先检查数据中是否已经存在该单词,有则先从数据库中恢复,
* 然后将新的属性在添加到原有属性中
* @param eWord String
*/
public CnWord(String cword,WordGroup wg){
word=cword;
rsId=wg.searchWord(word);
if(rsId!=-1){
loadDB();
}
}
/**
* 添加enid关联以及属性,如果已经有存在的EnId,则忽略
* @param cnids String
*/
public void addEnId(String enid){
if(!enRSId.contains(enid)){
enRSId.addElement(enid);
}
}
/**
* 从数据库加载该EnWord对象
*/
public void loadDB(){
DbTool dt=DbTool.getInstance();
formBytes(dt.getRSByte(DbTool.CN_WORD_DB,rsId));
}
/**
* 将单词的属性转换成统一的byte[]格式
* 转换CnWord的属性为byte[]格式
* @return byte[]
* @throws IOException
*/
public void toBytes() throws IOException {
try{
ByteArrayOutputStream bos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bos);
//写入word
dos.writeUTF(word);
//写入关联En单词的id
int encount=enRSId.size();
dos.writeInt(encount);
for(int i=0;i<encount;i++)
dos.writeUTF((String)enRSId.elementAt(i));
//转换为byte[]
bytes=bos.toByteArray();
dos.close();
bos.close();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 将byte[]格式还原为EnWord的属性方式
* @param bs byte[]
*/
public void formBytes(byte[]data){
bytes=data;
if(data==null||data.length==0){
return;
}
try{
ByteArrayInputStream bis = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bis);
//读取word属性
word=dis.readUTF();
//读取关联EnId属性
int encount=dis.readInt();
enRSId.removeAllElements();
for(int i=0;i<encount;i++)
enRSId.addElement(dis.readUTF());
dis.close();
bis.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -