Bonsoir,
Mon objectif est de créer un fichier .txt sur la mémoire externe et d'y écrire. Cependant après avoir passé une après midi à chercher pourquoi ça ne fonctionnait pas, je n'ai toujours pas la réponse. J'utilise ce code basique :
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 String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/" + package + "/files/" + "test.txt"; Log.d("State", Environment.getExternalStorageState()); Log.d("FilePath", filePath); File mFile = new File(filePath); FileOutputStream out; try { mFile.createNewFile(); out = new FileOutputStream(mFile); Log.d("TryCatch", "J'ecris"); ObjectOutputStream oos = new ObjectOutputStream(out); String test = "aaa"; oos.writeObject(test); oos.close(); if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); }
qui lève une exception. Voici le logcat :
Je comprends bien que le fichier et le dossier n'existe pas, mais je pensais qu'Android les créerait lui même. Soit, je crée moi même sous Windows les dossiers et retente l'expérience. Cette fois ci pas d'exception, mais le fichier n'est pas crée alors que le Log situé dans le Try Catch apparaît.
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 03-06 21:38:41.105: D/State(22448): mounted 03-06 21:38:41.105: D/FilePath(22448): /mnt/sdcard/Android/data/package/files/test.txt 03-06 21:38:41.105: W/System.err(22448): java.io.IOException: open failed: ENOENT (No such file or directory) 03-06 21:38:41.110: W/System.err(22448): at java.io.File.createNewFile(File.java:940) 03-06 21:38:41.110: W/System.err(22448): at fr.lri.insitue.probe.ui.MainActivity.onCreate(MainActivity.java:94) 03-06 21:38:41.110: W/System.err(22448): at android.app.Activity.performCreate(Activity.java:4465) 03-06 21:38:41.110: W/System.err(22448): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 03-06 21:38:41.110: W/System.err(22448): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 03-06 21:38:41.110: W/System.err(22448): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 03-06 21:38:41.110: W/System.err(22448): at android.app.ActivityThread.access$600(ActivityThread.java:123) 03-06 21:38:41.110: W/System.err(22448): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 03-06 21:38:41.110: W/System.err(22448): at android.os.Handler.dispatchMessage(Handler.java:99) 03-06 21:38:41.110: W/System.err(22448): at android.os.Looper.loop(Looper.java:137) 03-06 21:38:41.110: W/System.err(22448): at android.app.ActivityThread.main(ActivityThread.java:4424) 03-06 21:38:41.110: W/System.err(22448): at java.lang.reflect.Method.invokeNative(Native Method) 03-06 21:38:41.110: W/System.err(22448): at java.lang.reflect.Method.invoke(Method.java:511) 03-06 21:38:41.110: W/System.err(22448): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 03-06 21:38:41.110: W/System.err(22448): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 03-06 21:38:41.110: W/System.err(22448): at dalvik.system.NativeStart.main(Native Method) 03-06 21:38:41.110: W/System.err(22448): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 03-06 21:38:41.110: W/System.err(22448): at libcore.io.Posix.open(Native Method) 03-06 21:38:41.110: W/System.err(22448): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 03-06 21:38:41.115: W/System.err(22448): at java.io.File.createNewFile(File.java:933) 03-06 21:38:41.115: W/System.err(22448): ... 15 more
Concernant le manifest j'ai ces permissions :
mais ça ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
Après avoir essayé pas mal de chose je n'arrive pas à trouver ce qui cloche, sachant que je test l'application sur mon smartphone et que j'ai effectué les tests en ayant le smartphone branché et débranché. Je suis donc à la recherche de pistes pour corriger ce problème.
Merci de votre aide.
Partager