J'essaie de copier un fichier db android de mon dossier d'application à un autre sur la carte SD. Et à partir de l'explorateur de fichiers DDMS, je peux remarquer que la taille du fichier copié est 0. Ceci est mon code ci-dessous.Le fichier db android copié est vide
public boolean copyDBFile(){
File dbFile =new File(Environment.getDataDirectory() + DB_PATH);
File exportDir = new File(Environment.getExternalStorageDirectory()
+ "/BACKUP_DIR");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
File file = new File(exportDir, dbFile.getName());
try {
file.createNewFile();
copyFile(dbFile, file);
return true;
} catch (IOException e) {
return false;
}
}
public void copyFile(File src, File dst) throws IOException {
FileChannel inChannel = new FileInputStream(src).getChannel();
FileChannel outChannel = new FileOutputStream(dst).getChannel();
try {
inChannel.transferTo(0, inChannel.size(), outChannel);
} finally {
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
}
Est-ce un problème de permission? Merci pour l'aide.
Vous devriez * toujours * avoir une instruction catch pour chaque instruction try, sinon vous ne pouvez pas dire si une exception se produit. Ici, ajoutez une capture à votre essai dans copyFile. – Snicolas
pouvez-vous expliquer que plus plz? Je pense qu'il ne veut pas attraper l'exception mais simplement fermer les canaux pour éviter les fuites. voulez-vous dire qu'il est automatiquement pris? si oui alors je pense que vous avez résolu le problème :) – MozenRath
Le fichier db n'est pas copié. Juste un fichier de taille 0 avec le même nom. On dirait que le fichier est créé mais jamais copié. –