AndroidアプリケーションをSQLiteデータベース(300 KB)で出荷しています。読み込んだ後、使用するために移動する必要があります。 iOSでは、署名されているためアプリケーションに書き込むことができないため、データベースをアプリからドキュメントフォルダに移動します。これはAndroidの理由ですか?だから私の質問に戻る。次のコードは、データベースを正しくコピーせず、その一部のみをコピーします。なぜそうなのか?私はここで間違ったことをしましたか?Androidでデータベースを移動する
private final static String DB_NAME = "klb.sqlite";
dbPath = "/data/data/" + context.getPackageName() + "/databases/"; // setting this in constructor
(上記の線がプライベートメンバーで、以下の両方のコード例に適用されます)
BufferedInputStream bis = new BufferedInputStream(context.getAssets().open(DB_NAME));
FileOutputStream fos = new FileOutputStream(dbPath + DB_NAME);
while (bis.read() != -1) {
fos.write(bis.read());
}
bis.close();
fos.flush();
fos.close();
しかし、これは動作します(再インデントについて怠けているため申し訳ありませんが)
InputStream inputStream = context.getAssets().open("klb.sqlite");
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
ok、どこからデータベースファイルを配置し、どこに配置したいのですか? – user370305
あなたがそれを読んで私の投稿に書いた – LuckyLuke