Bonjour

je débute actuellement dans le développement d’applications Android. J’ai besoin pour un projet d’écrire des octets dans un fichier. J’ai donc cherché à écrire un programme qui pour le moment écrit un petit texte dans un fichier situé sur la carte SD.

Mais mon problème est que quand je lance mon programme sur mon Nexus 4, j'obtiens :
java.io.IEOxception : open failed ENOENT No such file or directory
Mon code est le suivant :
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
 
public class MainActivity extends Activity {
 
  private String FILENAME = "sortie.txt";
  private String textToWrite = "Test il y a quelque chose dans le fichier";
  private File mFile = null;
  FileOutputStream output;
 
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    // Creation d'un fichier sur la carte SD
    mFile = new File(Environment.getExternalStorageDirectory().getPath() + "/Android/data/ " + getPackageName() + "/files/" + FILENAME);
    Toast.makeText(this, "Creation ok. Chemin :\n"+ Environment.getExternalStorageDirectory().getPath(), Toast.LENGTH_LONG).show();
 
        try {
 
          // Si le fichier est lisible et qu'on peut écrire dedans
          if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
              && !Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment.getExternalStorageState())) {
            // On crée un nouveau fichier. Si le fichier existe déjà, il ne sera pas créé
            mFile.createNewFile();
            output = new FileOutputStream(mFile);
            output.write(textToWrite.getBytes());
            if(output != null)
              output.close();
          }
        } catch (FileNotFoundException e) {
          Toast.makeText(this, "Fichier non trouvé\n"+e.toString(), Toast.LENGTH_LONG).show();
          e.printStackTrace();
 
        } catch (IOException e) {
        	Toast.makeText(this, "Erreur\n"+e.toString(), Toast.LENGTH_LONG).show();
        	e.printStackTrace();
        }
  }
}
Sinon, je ne suis pas Root sur le téléphonne, je ne pense pas que cela soit important mais je le précise quand même.

Si quelqu'un peut me dire pourquoi cela ne fonctionne pas.
Merci d'avance