- 浏览: 236564 次
- 性别:
- 来自: 内蒙古
文章分类
- 全部博客 (236)
- Android 功能实现 (31)
- sql数据库的学习 (8)
- Android 美化界面 (2)
- Android 优化 (1)
- Ruby on Rails 方面 (45)
- git 方面的学习 (1)
- ruby 编程的琢磨 (13)
- linux下工具软件 (13)
- 操作系统的学习 (40)
- 非技术 (13)
- 网站开发 (18)
- js 学习笔记 (19)
- css学习 (5)
- 回顾总结 (2)
- Delphi 学习 (2)
- C 语言学习笔记 (1)
- 数据结构 (1)
- node js 学习 (6)
- 设计模式 (2)
- mongdb 学习笔记 (0)
- 软件服务 (3)
- osx系统 (4)
- 搜索引擎 (1)
- 测试工具 (1)
- Aliyun (1)
- 前端JS (1)
- python学习 (0)
- iOS系统 (1)
- 分布式锁 (1)
- 开发工具 (0)
- java代码 (2)
- java (0)
最新评论
-
jiguanghover:
写的不错,收藏一下
Ubuntu下RVM, Ruby, rails安装详细 和 卸载 -
maoghj:
回顾总结(二) -
yun2223:
对楼主表示感谢
Android控件开发之Gallery3D效果 -
zw_lovec:
说清楚点吧 亲 加点注释
out of memory -
lzyfn123:
http://www.iteye.com/images/smi ...
ruby-string 字符串的学习
首先使用sqliteadDev(一个windows下图形化sqlite工具)建立一个新数据库。
android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M的文件
如果使用SD卡,需要在AndroidManifest.xml中设置权限
< uses-permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE" ></ uses-permission > < uses-permission android:name ="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ></ uses-permission >
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
/**
* DBHelper dbHelper = new DBHelper(this);
* dbHelper.createDataBase();
* SQLiteDatabase db = dbHelper.getWritableDatabase();
* Cursor cursor = db.query()
* db.execSQL(sqlString);
* 注意:execSQL不支持带;的多条SQL语句,只能一条一条的执行,晕了很久才明白
* 见execSQL的源码注释 (Multiple statements separated by ;s are not supported.)
* 将把assets下的数据库文件直接复制到DB_PATH,但数据库文件大小限制在1M以下
* 如果有超过1M的大文件,则需要先分割为N个小文件,然后使用copyBigDatabase()替换copyDatabase()
*/
public class DBHelper extends SQLiteOpenHelper {
//用户数据库文件的版本
private static final int DB_VERSION = 1;
//数据库文件目标存放路径为系统默认位置,cn.arthur.examples 是你的包名
private static String DB_PATH = "/data/data/cn.fn/databases/";
/*
//如果你想把数据库文件存放在SD卡的话
private static String DB_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/arthurcn/drivertest/packfiles/";
*/
private static String DB_NAME = "hello.db";
private static String ASSETS_NAME = "hello.db";
private SQLiteDatabase myDataBase = null;
private final Context myContext;
/**
* 如果数据库文件较大,使用FileSplit分割为小于1M的小文件
* 此例中分割为 hello.db.101 hello.db.102 hello.db.103
*/
//第一个文件名后缀
private static final int ASSETS_SUFFIX_BEGIN = 101;
//最后一个文件名后缀
private static final int ASSETS_SUFFIX_END = 103;
/**
* 在SQLiteOpenHelper的子类当中,必须有该构造函数
* @param context 上下文对象
* @param name 数据库名称
* @param factory 一般都是null
* @param version 当前数据库的版本,值必须是整数并且是递增的状态
*/
public DBHelper(Context context, String name, CursorFactory factory, int version) {
//必须通过super调用父类当中的构造函数
super(context, name, null, version);
this.myContext = context;
}
public DBHelper(Context context, String name, int version){
this(context,name,null,version);
}
public DBHelper(Context context, String name){
this(context,name,DB_VERSION);
}
public DBHelper (Context context) {
this(context, DB_PATH + DB_NAME);
}
public void createDataBase() throws IOException{
boolean dbExist = checkDataBase();
if(dbExist){
//数据库已存在,do nothing.
}else{
//创建数据库
try {
File dir = new File(DB_PATH);
if(!dir.exists()){
dir.mkdirs();
}
File dbf = new File(DB_PATH + DB_NAME);
if(dbf.exists()){
dbf.delete();
}
SQLiteDatabase.openOrCreateDatabase(dbf, null);
// 复制asseets中的db文件到DB_PATH下
copyDataBase();
} catch (IOException e) {
throw new Error("数据库创建失败");
}
}
}
//检查数据库是否有效
private boolean checkDataBase(){
SQLiteDatabase checkDB = null;
String myPath = DB_PATH + DB_NAME;
try{
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){
//database does't exist yet.
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
/**
* Copies your database from your local assets-folder to the just created empty database in the
* system folder, from where it can be accessed and handled.
* This is done by transfering bytestream.
* */
private void copyDataBase() throws IOException{
//Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(ASSETS_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
//复制assets下的大数据库文件时用这个
private void copyBigDataBase() throws IOException{
InputStream myInput;
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
for (int i = ASSETS_SUFFIX_BEGIN; i < ASSETS_SUFFIX_END+1; i++) {
myInput = myContext.getAssets().open(ASSETS_NAME + "." + i);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myInput.close();
}
myOutput.close();
}
@Override
public synchronized void close() {
if(myDataBase != null){
myDataBase.close();
}
super.close();
}
/**
* 该函数是在第一次创建的时候执行,
* 实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法
*/
@Override
public void onCreate(SQLiteDatabase db) {
}
/**
* 数据库表结构有变化时采用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
转自:http://www.cnblogs.com/som5/archive/2011/01/23/android_sqlite_assets_sdcard.html
发表评论
-
Android里的音量调节
2013-04-01 13:37 1318步骤1:或许系统音量 ... -
Android Camera 方法分析
2012-03-29 10:52 3484Android Camera源码分析 android通 ... -
MyCameraActivity
2012-03-29 10:10 674package cn.fn; import android. ... -
MyCameraActivity
2012-04-01 13:27 869package cn.fn; import android. ... -
android AutoCompleteTextView+ SQLite
2012-03-21 13:33 1090android AutoCompleteTextView+ S ... -
android 异步回调加载网络图片
2012-03-20 11:50 914在做应用的时候很多时候都会去从网络加载图片,而且还要做各种各样 ... -
ProgressBar+AsyncTask 实现界面数据异步加载
2012-03-20 10:09 1598ProgressBar+AsyncTask 实现界面数据异步 ... -
Android 网络图片异步加载实例
2012-03-20 10:04 950Android 网络图片异步加载实例 ... -
解决java.lang.OutOfMemoryError
2012-03-19 15:53 1064解决java.lang.OutOfMemoryError ... -
android Text 删除线
2012-03-16 19:35 1146import android.app.Activit ... -
android Gallery 详解
2012-03-14 14:17 1500android Gallery 正文 ... -
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask,Task,AsynTask等
2012-03-14 11:43 1434Android的线程使用来更新UI----Thread、Han ... -
AsyncTask的使用
2012-03-14 10:59 787AsyncTask的使用 ... -
Android控件开发之Gallery3D效果
2012-03-13 14:38 2855Android控件开发之Gal ... -
android GridView
2012-03-08 10:28 903主类 import android.app.Activi ... -
ListView异步加载图片是非常实用的方法
2012-03-08 10:09 926ListView异步加载图片是非常实用的方法,凡是是要通过网络 ... -
Android异步加载图像小结
2012-03-06 16:46 589Android异步加载图像小结 (1)由于an ... -
AutoCompleteTextView
2012-03-05 14:53 1413AutoCompleteTextView ... -
android 动态加载List
2012-03-05 11:11 978main.xml <?xml ver ... -
AutoCompleteTextView
2012-03-02 16:17 1043public class CityAdapter<T& ...
相关推荐
Android 将assets中的数据库导入到项目中databases https://blog.csdn.net/qq_31939617/article/details/80929543
在工程目录assets下的文件,将目录下的文件复制到手机内存或者SD卡内存中。
Assets文件介绍 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity里面调用getAssets() 来获取AssetManager引用。 2. 再用AssetManager的open(String...
将assets下的资源复制到SD卡,实现了一个工具类,传入两个路径即可。
文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar
支持 Assets 下的文件或者文件夹拷贝到手机存储 public static void copyAssetsDirToSDCard(Context context, String assetsDirName, String sdCardPath) { Log.d(TAG, copyAssetsDirToSDCard() called with: ...
主要为大家详细介绍了Android复制assets文件到SD卡的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android高级应用源码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.zip
上传assset里的图片可以先保存在本地,再上传,代码是保存 sd卡部分
/** * 将assets文件夹下的文件复制到SD卡中 */ public class CopyZipFileToSD {}
这是一个android下对assets文件夹的使用,实现了对外部导入数据库文件的操作,查询和删除功能
数据库拷贝到应用中,将已经在assets里面建好的数据库拷贝到应用中,也就是sd卡中的一个例子
主要介绍了Android操作存放在assets文件夹下SQLite数据库的方法,实例分析了Android操作SQLite数据库的相关技巧,需要的朋友可以参考下
文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android编程实现: 1、在res目录下建立raw...2、在您的手机相册目录下(即:DCIM目录)新建两文本文件,分别命名为a1.txt和a2.txt,并将raw目录下的a1.txt和assets目录下a2.txt文件的文本内容复制到新建的同名文件中。
获取assets文件夹下资源 获取assets文件夹下资源 详细介绍:https://blog.csdn.net/Greathfs/article/details/52123984
本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中。 完整示例代码如下: import java.io.File; import ...
从SD卡或者Assets下读取配置文件批量删除应用