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);}
		}
	}
}