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

📄 database.java

📁 <j2me 开发精解> 詹建光著 里所有的源码。对J2me的开发相当有帮助
💻 JAVA
字号:
package com.j2medev.chapter4;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import javax.microedition.lcdui.Image;
import javax.microedition.rms.*;

public class Database {
    
    public static final String DATABASE_NAME = "database";
    private RecordStore rs = null;
    private boolean empty = true;
 
    public Database() {
        openDatabase();
    }
    
    private void openDatabase(){
        try{
            rs = RecordStore.openRecordStore(DATABASE_NAME,true);
            if(rs.getNumRecords() > 0){
                //记录存储中已经有数据
                empty = false;
            }else{
                //初始化数据内容,向RecordStore中写入图片和文本
                populateDatabase();
            }
        }catch(RecordStoreException e){
            e.printStackTrace();
        }
    }
    //向记录存储中写入图片和文本数据
    private void populateDatabase(){
        try{
            initFile("file.txt");
            initFile("JavaPowered.png");
        }catch(IOException e){
            e.printStackTrace();
        }catch(RecordStoreException ex){
            ex.printStackTrace();
        }
    }
    
    private void initFile(String fileName) throws IOException,RecordStoreException{
        InputStream is = this.getClass().getResourceAsStream("/"+fileName);
        if(is != null){
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            //创建缓冲区用于读取数据,如果一个字节一个字节读取效率很低。
            byte[] data = new byte[1024];
            int ch = 0;
            while((ch = is.read(data, 0,data.length))!=-1){
                baos.write(data, 0, ch);
            }
            byte[] array = baos.toByteArray();
            //添加记录
            rs.addRecord(array, 0, array.length);
            is.close();
            baos.close(); 
        }
    }
    
    public boolean isEmpty(){
        return this.empty;
    }
    
    public Image getImage(){
        try{
            //这里硬编码,我们已知图片记录的recordId是2
            byte[] img = rs.getRecord(2);
            return Image.createImage(img, 0,img.length);
        }catch(RecordStoreException e){
            e.printStackTrace();
        }
        return null;
    }
    
    public String getText(){
        try{
             //这里硬编码,我们已知文本记录的recordId是1
            byte[] text = rs.getRecord(1);
            //解决中文问题,使用UTF-8编码
            return new String(text,"UTF-8"  );
        }catch(RecordStoreException e){
            e.printStackTrace();
        }catch(IOException ex){
            ex.printStackTrace();
        }
        return null;
    }
}

⌨️ 快捷键说明

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