Copie de Base de données à partir du dossier des actifs dans les déracinés de l'appareil
Je suis en train de copier DB à partir d'un dossier des actifs à l'appareil. Ce code fonctionne bien sur Émulateur et Dispositif enracinée. Je veux juste savoir est-il de créer de problème sur les déracinés de l'appareil ou il travaillera même.
private void StoreDatabase() {
File DbFile = new File(
"data/data/packagename/DBname.sqlite");
if (DbFile.exists()) {
System.out.println("file already exist ,No need to Create");
} else {
try {
DbFile.createNewFile();
System.out.println("File Created successfully");
InputStream is = this.getAssets().open("DBname.sqlite");
FileOutputStream fos = new FileOutputStream(DbFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = is.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
System.out.println("File succesfully placed on sdcard");
//Close the streams
fos.flush();
fos.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Oui, votre extrait de code fonctionne parfaitement sur non racinées dispositifs de trop 🙂
OriginalL'auteur Krishnakant Dalal | 2012-05-24
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne pour vous dans tous les appareils et l'émulateur, pas besoin de root.
Non, pour sûr. code ci-dessus fonctionne bien et le vôtre aussi.
JAMAIS coder en dur des CHEMINS. Le
outFileName
valeur sera mauvais sur Android nombreux environnements, tels que les comptes secondaires. UtilisationgetDatabasePath()
pour en déduire le chemin d'accès d'un fichier de base de données.Merci @CommonsWare . Je vais le changer à
String outFileName = getDatabasePath() + dbname;
Si ce n'est pas myContext.getDatabasePath(dbname)? Aussi getDatabasePath(dbName) renvoie un fichier objet n'est pas une Chaîne.
OriginalL'auteur abbas.aniefa
après des heures de travail, VOTRE code viens de résoudre mon problème...
OriginalL'auteur Mahmoud Shahoud
Je ne suis pas sûr, mais cela fonctionne sur tous les appareils que j'ai testé. J'ai volé cette méthode (à partir de quelque part ici), et générique pour à la fois la sauvegarde et la restauration:
Puis je viens de le sauvegarder en appelant le:
Où
getDatabasePath()
etgetDatabaseBackupPath()
sont juste des valeurs de chaîneOriginalL'auteur Quintin Balsdon
OriginalL'auteur Vinay Mandadapu
Cela fonctionne pour Kotlin.
OriginalL'auteur arjunaskykok