android开发 apk文件,android开发中,将数据库文件与APK一起发布?
2015-11-11 回答
可以將xx.db文件復制到eclipse android工程中的res\raw目錄中。所有在res\raw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。
使用opendatabase方法來打開數據庫文件,如果該文件不存在,系統會自動創建/sdcard/dictionary目錄,并將res\raw目錄中的 xx.db文件復制到/sdcard/dictionary目錄中。opendatabase方法的實現代碼如下:這里以dictionary.db為例
[java] view plaincopyprint?
01.private sqlitedatabase opendatabase()
02. {
03. try
04. {
05. // 獲得dictionary.db文件的絕對路徑
06. string databasefilename = database_path + "/" + database_filename;
07. file dir = new file(database_path);
08. // 如果/sdcard/dictionary目錄中存在,創建這個目錄
09. if (!dir.exists())
10. dir.mkdir();
11. // 如果在/sdcard/dictionary目錄中不存在
12. // dictionary.db文件,則從res\raw目錄中復制這個文件到
13. // sd卡的目錄(/sdcard/dictionary)
1... 可以將xx.db文件復制到eclipse android工程中的res\raw目錄中。所有在res\raw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。
使用opendatabase方法來打開數據庫文件,如果該文件不存在,系統會自動創建/sdcard/dictionary目錄,并將res\raw目錄中的 xx.db文件復制到/sdcard/dictionary目錄中。opendatabase方法的實現代碼如下:這里以dictionary.db為例
[java] view plaincopyprint?
01.private sqlitedatabase opendatabase()
02. {
03. try
04. {
05. // 獲得dictionary.db文件的絕對路徑
06. string databasefilename = database_path + "/" + database_filename;
07. file dir = new file(database_path);
08. // 如果/sdcard/dictionary目錄中存在,創建這個目錄
09. if (!dir.exists())
10. dir.mkdir();
11. // 如果在/sdcard/dictionary目錄中不存在
12. // dictionary.db文件,則從res\raw目錄中復制這個文件到
13. // sd卡的目錄(/sdcard/dictionary)
14. if (!(new file(databasefilename)).exists())
15. {
16. // 獲得封裝dictionary.db文件的inputstream對象
17. inputstream is = getresources().openrawresource(r.raw.dictionary);
18. fileoutputstream fos = new fileoutputstream(databasefilename);
19. byte[] buffer = new byte[8192];
20. int count = 0;
21. // 開始復制dictionary.db文件
22. while ((count = is.read(buffer)) > 0)
23. {
24. fos.write(buffer, 0, count);
25. }
26.
27. fos.close();
28. is.close();
29. }
30. // 打開/sdcard/dictionary目錄中的dictionary.db文件
31. sqlitedatabase database = sqlitedatabase.openorcreatedatabase(
32. databasefilename, null);
33. return database;
34. }
35. catch (exception e)
36. {
37. }
38. return null;
39. }
private sqlitedatabase opendatabase()
{
try
{
// 獲得dictionary.db文件的絕對路徑
string databasefilename = database_path + "/" + database_filename;
file dir = new file(database_path);
// 如果/sdcard/dictionary目錄中存在,創建這個目錄
if (!dir.exists())
dir.mkdir();
// 如果在/sdcard/dictionary目錄中不存在
// dictionary.db文件,則從res\raw目錄中復制這個文件到
// sd卡的目錄(/sdcard/dictionary)
if (!(new file(databasefilename)).exists())
{
// 獲得封裝dictionary.db文件的inputstream對象
inputstream is = getresources().openrawresource(r.raw.dictionary);
fileoutputstream fos = new fileoutputstream(databasefilename);
byte[] buffer = new byte[8192];
int count = 0;
// 開始復制dictionary.db文件
while ((count = is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
// 打開/sdcard/dictionary目錄中的dictionary.db文件
sqlitedatabase database = sqlitedatabase.openorcreatedatabase(
databasefilename, null);
return database;
}
catch (exception e)
{
}
return null;
}
在opendatabase方法中使用了幾個常量,這些常量是在程序的主類(main)中定義的,代碼如下:
[java] view plaincopyprint?
01.public class main extends activity implements onclicklistener, textwatcher
02.{
03. private final string database_path = android.os.environment
04. .getexternalstoragedirectory().getabsolutepath()
05. + "/dictionary";
06. private final string database_filename = "dictionary.db";
07.}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android开发 apk文件,android开发中,将数据库文件与APK一起发布?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux字符串截取(linux字符串)
- 下一篇: ssms2008 代码自动提示_使用 S