Ecrire dans un fichier txt sur carte SD
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 :
Citation:
java.io.IEOxception : open failed ENOENT No such file or directory
Mon code est le suivant :
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
|
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