可以將dictionary.db檔案複製到Eclipse Android工程中的res/raw目錄中,1所示。所有在res/raw目錄中的檔案不會被壓縮,這樣可以直接提取該目錄中的檔案。
使用openDatabase方法來開啟資料庫檔案,如果該檔案不存在,系統會自動建立/sdcard/dictionary目錄,並將res/raw目錄中的 dictionary.db檔案複製到/sdcard/dictionary目錄中。openDatabase方法的實現代碼如下:
代碼
private SQLiteDatabase openDatabase()<br /> {<br /> try<br /> {<br /> // 獲得dictionary.db檔案的絕對路徑<br /> String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;<br /> File dir = new File(DATABASE_PATH);<br /> // 如果/sdcard/dictionary目錄中存在,建立這個目錄<br /> if (!dir.exists())<br /> dir.mkdir();<br /> // 如果在/sdcard/dictionary目錄中不存在<br /> // dictionary.db檔案,則從res/raw目錄中複製這個檔案到<br /> // SD卡的目錄(/sdcard/dictionary)<br /> if (!(new File(databaseFilename)).exists())<br /> {<br /> // 獲得封裝dictionary.db檔案的InputStream對象<br /> InputStream is = getResources().openRawResource(R.raw.dictionary);<br /> FileOutputStream fos = new FileOutputStream(databaseFilename);<br /> byte[] buffer = new byte[8192];<br /> int count = 0;<br /> // 開始複製dictionary.db檔案<br /> while ((count = is.read(buffer)) > 0)<br /> {<br /> fos.write(buffer, 0, count);<br /> }<br /> fos.close();<br /> is.close();<br /> }<br /> // 開啟/sdcard/dictionary目錄中的dictionary.db檔案<br /> SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(<br /> databaseFilename, null);<br /> return database;<br /> }<br /> catch (Exception e)<br /> {<br /> }<br /> return null;<br /> }
在openDatabase方法中使用了幾個常量,這些常量是在程式的主類(Main)中定義的,代碼如下:
代碼
public class Main extends Activity implements OnClickListener, TextWatcher<br />{<br /> private final String DATABASE_PATH = android.os.Environment<br /> .getExternalStorageDirectory().getAbsolutePath()<br /> + "/dictionary";<br /> private final String DATABASE_FILENAME = "dictionary.db";<br />}
轉自http://www.eoeandroid.com/thread-34883-1-1.html