Mise à jour d'un fichier dans les assets
Bonjour tout le monde,
j'ai un fichier dans les assets que j'aimerais mettre à jour avec un fichier qui est à la base de ma sdcard.
Mon code fonctionne bien, aucune erreur n'est soulevé. Cependant, le fichier n'est pas mis à jour, je ne comprends pas trop pourquoi, vous pouvez m'aider ?
Voilà mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
public class Update extends Activity {
private final static String TAG = "Update";
TextView v = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
v = (TextView) findViewById(R.id.update);
v.setText("The update is done ! Enjoy.");
// on supprime le dictionnaire existant
this.deleteFile(this.getAssets() + "dico.xml");
// on en créer un nouveau qui va recevoir les données
File f = new File(this.getFilesDir(), "dico.xml");
//Nous déclarons nos objets en dehors du bloc try/catch
FileInputStream fis = null;
FileOutputStream fos = null;
try
{
//On instancie nos objets :
//fis va lire le fichier et
//fos va écrire dans le nouveau !
fis = new FileInputStream(new File("sdcard/dico.xml"));
fos = new FileOutputStream(f);
//On crée un tableau de byte
//pour indiquer le nombre de bytes
//lus à chaque tour de boucle
byte[] buf = new byte[8];
//On crée une variable de type int
//pour y affecter le résultat de la lecture
//Vaut -1 quand c'est fini
int n = 0;
//Tant que l'affectation dans la variable est possible, on boucle
//Lorsque la lecture du fichier est terminée
//l'affectation n'est plus possible !
//On sort donc de la boucle
while((n = fis.read(buf)) >= 0)
{
//On écrit dans notre deuxième fichier
//avec l'objet adéquat
fos.write(buf);
//On affiche ce qu'a lu notre boucle
//au format byte et au format char
for(byte bit : buf)
System.out.print((char)bit);
System.out.println("");
}
System.out.println("Copie terminée !");
}
catch (FileNotFoundException e) {Log.e(TAG, "FILENOTFOUNDEXCEPTION", e);
v.setText("The update FAILED\n\nCheck that your XML file is at the root of your sdcard.");}
catch (IOException e1) {Log.e(TAG, "IOEXCEPTION", e1);
v.setText("The update FAILED\n\nCheck that your XML file is at the root of your sdcard.");}
finally{
//On ferme nos flux de données dans un bloc finally
//pour s'assurer que ces instructions seront exécutées
//dans tous les cas même si une exception est levée !
try{
if(fis != null)
fis.close();
if(fos != null)
fos.close();
}catch(IOException e){ Log.e(TAG, "IOEXCEPTION", e);}
}
}
} |