创建DB时文件复制错误(Android资产和SQLite)
当在创建DB时文件复制错误(Android资产和SQLite),android,sqlite,fileoutputstream,android-assets,Android,Sqlite,Fileoutputstream,Android Assets,当在SQLiteOpenHelper类中调用onCreate(SQLiteDatabase)时,我正在将具有SQLite数据库结构的文件从资产复制到我的应用程序文件夹中,但原始文件和复制的文件并不完全相等: (右侧资产文件夹中的原始文件,左侧复制了一个) 如您所见,只有第一个块不同,文件的其余部分完全相同 我的onCreate()方法是: @Override public void onCreate(SQLiteDatabase arg0) { Log.i(TAG, "onCreate
SQLiteOpenHelper
类中调用onCreate(SQLiteDatabase)
时,我正在将具有SQLite数据库结构的文件从资产复制到我的应用程序文件夹中,但原始文件和复制的文件并不完全相等:
(右侧资产文件夹中的原始文件,左侧复制了一个)
如您所见,只有第一个块不同,文件的其余部分完全相同
我的onCreate()
方法是:
@Override
public void onCreate(SQLiteDatabase arg0) {
Log.i(TAG, "onCreate");
try {
copyDatabase();
} catch (IOException e) {
e.printStackTrace();
}
}
private void copyDatabase() throws IOException {
InputStream input = context.getAssets().open(DB_NAME);
String outFilename = DB_PATH;
OutputStream output = new FileOutputStream(outFilename);
byte[] buffer = new byte[1024];
int mLength;
while ((mLength = input.read(buffer)) > 0) {
output.write(buffer, 0, mLength);
}
output.flush();
output.close();
input.close();
}
而copyDatabase()
方法是:
@Override
public void onCreate(SQLiteDatabase arg0) {
Log.i(TAG, "onCreate");
try {
copyDatabase();
} catch (IOException e) {
e.printStackTrace();
}
}
private void copyDatabase() throws IOException {
InputStream input = context.getAssets().open(DB_NAME);
String outFilename = DB_PATH;
OutputStream output = new FileOutputStream(outFilename);
byte[] buffer = new byte[1024];
int mLength;
while ((mLength = input.read(buffer)) > 0) {
output.write(buffer, 0, mLength);
}
output.flush();
output.close();
input.close();
}
我不知道为什么我的copyDatabase()
方法在循环的第一次迭代中不能正常工作
知道吗?DB\U名称和DB\U路径的值是多少?文件大小是多少?DB_NAME是一个带有数据库名称的字符串,DB_PATH是一个带有数据库文件路径的字符串:
DB_PATH=context.getDatabasePath(DB_NAME).getPath()代码>和两个文件的文件大小完全相同,82.944字节,正如您所看到的,只有第一个块不同,文件的其余部分完全相同。
????很抱歉我不明白。什么样的程序会显示这个?你应该真正说出这些值。以DB_名称开始。