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 : Sélectionner tout - Visualiser dans une fenêtre à part
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);} } } }
Partager