⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enword.java

📁 一個手機程序(電子詞典),一個不可多得的源碼程序,是學習J2ME的好東東.
💻 JAVA
字号:
package org.zblog.zenghelper.dbtool;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.ByteArrayInputStream;
import java.util.Vector;

/**
 * <br><strong>Z英语学习助手-英文单词类</strong><br>
 * <br>该类的对象代表了一个英文单词,该类具有以下属性:
 * <br>1.在RMS中的Id编号: int rsId
 * <br>2.词语本身: String word
 * <br>3.生词表中的Id: int senId
 * <br>4.音标属性: String[] ybs
 * <br>5.关联的中文词语id的集合: Vector cnRSId
 * <br>6.与中文词语id对应的(词性)集合:Vector cnAdj
 * <br>7.该类的byte[]格式数据: byte[]bytes
 * <br>该类根据RMS中的id,从RMS中获取数据进行实例化.也可以通过store()将对象保存到RMS.
 * @author <a href="mailto:zcw@zblog.org">朱传伟</a><br>
 * <a href="http://www.zblog.org">www.zblog.org</a></p>
 * @version <strong>ZEnHelper</strong> Ver 1.0
 */
public class EnWord {
    public int rsId=-1;
    public String word=null;
    public int senId=-1;
    public String[]ybs=null;
    public Vector cnRSId=new Vector();
    public Vector cnAdj=new Vector();
    public byte[]bytes=null;
    /**
     * 通过RMS中的Id进行构造,实际是为了从数据库中恢复该对象
     * @param Id int
     */
    public EnWord(int d){
        rsId=d;
        loadDB();
    }
    /**
     * 传递数据单词word方式构造,该方式一般用在新添加单词时用到,
     * 首先检查数据中是否已经存在该单词,有则先从数据库中恢复,
     * 然后将新的属性在添加到原有属性中
     * @param eWord String
     */
    public EnWord(String eWord,WordGroup wg){
        word=eWord;
        rsId=wg.searchWord(word);
        if(rsId!=-1){
            loadDB();
        }
    }

    /**
     * 修改原有音标为现在的音标
     * @param ybss String[]
     */
    public void setYbs(Vector ybv){
        if(ybv!=null&&ybv.size()>0){
            ybs=new String[ybv.size()];
            for(int i=0;i<ybv.size();i++){
                ybs[i]=(String)ybv.elementAt(i);
            }
        }
    }

    public void setSen(int sid){
        senId=sid;
    }

    /**
     * 添加cnid关联,程序需屏蔽到相同的
     * 如果存在,则更新原有属性
     * @param cnids String
     */
    public void addCnId(String cnid,String adj){
        if(!cnRSId.contains(cnid)){
            cnRSId.addElement(cnid);
            cnAdj.addElement(adj);
        }
        else{
            cnAdj.setElementAt(adj,cnRSId.indexOf(cnid));
        }
    }

    /**
     * 从数据库加载该EnWord对象
     */
    public void loadDB(){
        DbTool dt=DbTool.getInstance();
        formBytes(dt.getRSByte(DbTool.EN_WORD_DB,rsId));
    }

    /**
     * 将单词的属性转换成统一的byte[]格式
     * 输出单词word的byte[]格式
     * @return byte[]
     * @throws IOException
     */
    public void toBytes() throws IOException {
        try{
            ByteArrayOutputStream bos=new ByteArrayOutputStream();
            DataOutputStream dos=new DataOutputStream(bos);
            //写入word
            dos.writeUTF(word);
            //写入sen
            dos.writeInt(senId);
            //写入音标
            int ybcount=0;
            if(ybs!=null)ybcount=ybs.length;
            dos.writeInt(ybcount);
            for(int i=0;i<ybcount;i++)
                dos.writeUTF(ybs[i]);
            //写入关联Cn单词的id
            int cncount=cnRSId.size();
            dos.writeInt(cncount);
            for(int i=0;i<cncount;i++)
                dos.writeUTF((String)cnRSId.elementAt(i));
            //写入关联Cn单词的id
            int adcount=cnAdj.size();
            dos.writeInt(adcount);
            for(int i=0;i<adcount;i++)
                dos.writeUTF((String)cnAdj.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();
            //读取sen
            senId=dis.readInt();
            //读取音标属性
            int ybcount = dis.readInt();
            ybs=new String[ybcount];
            for(int i=0;i<ybcount;i++)
                ybs[i]=dis.readUTF();
            //读取关联CnId属性
            int cncount=dis.readInt();
            cnRSId.removeAllElements();
            for(int i=0;i<cncount;i++)
                cnRSId.addElement(dis.readUTF());
            //读取关联CnId属性
            int adcount=dis.readInt();
            cnAdj.removeAllElements();
            for(int i=0;i<adcount;i++)
                cnAdj.addElement(dis.readUTF());
            dis.close();
            bis.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 保存修改后的CnWord
     */
    public void store(){
        try{
            toBytes();
            DbTool dt = DbTool.getInstance();
            dt.update(DbTool.EN_WORD_DB, this.bytes, this.rsId);
        }
        catch(Exception e){e.printStackTrace();}
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -