web-dev-qa-db-fra.com

Android: comment écrire un fichier dans la mémoire interne

Je développe une application Android simple et j'ai besoin d'écrire un fichier texte dans un périphérique de stockage interne. Je sais qu'il y a beaucoup de questions (et de réponses) à ce sujet, mais je ne peux vraiment pas comprendre ce que je fais de la mauvaise façon.

C’est le code que j’utilise dans mon activité pour écrire le fichier:

public void writeAFile(){
    String fileName = "myFile.txt";
    String textToWrite = "This is some text!";
    FileOutputStream outputStream;

   try {
      outputStream = openFileOutput(fileName , Context.MODE_PRIVATE);
      outputStream.write(textToWrite.getBytes());
      outputStream.close();
   } catch (Exception e) {
     e.printStackTrace();
   }
}

Je ne peux vraiment pas comprendre quelle erreur je fais. De plus, j'ai essayé this projet sur mon émulateur sous Android Studio et sur mon téléphone afin de comprendre où je fais quelque chose de mal, mais même avec ce projet, aucun fichier n'est écrit ni sur le téléphone ni sur l'émulateur.

EDIT: Je sais qu’aucun fichier n’est écrit dans ma mémoire interne parce que j’essaie de lire le contenu du fichier, une fois que j’ai écrit, avec ce code:

public void ReadBtn(View v) {
    //reading text from file
    try {
        FileInputStream fileIn=openFileInput("myFile.txt");
        InputStreamReader InputRead= new InputStreamReader(fileIn);

        char[] inputBuffer= new char[READ_BLOCK_SIZE];
        String s="";
        int charRead;

        while ((charRead=InputRead.read(inputBuffer))>0) {
            String readstring=String.copyValueOf(inputBuffer,0,charRead);
            s +=readstring;
        }
        InputRead.close();
        textmsg.setText(s);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Rien n'est montré du tout.

11
delca85

Utilisez le code ci-dessous pour écrire un fichier dans la mémoire de stockage interne 

EDIT: ajouté e.printStackTrace(); pour intercepter le blocage en tant que bonne pratique et rappels d'autorisations

public void writeFileOnInternalStorage(Context mcoContext,String sFileName, String sBody){      
    File file = new File(mcoContext.getFilesDir(),"mydir");
    if(!file.exists()){
        file.mkdir();
    }

    try{
        File gpxfile = new File(file, sFileName);
        FileWriter writer = new FileWriter(gpxfile);
        writer.append(sBody);
        writer.flush();
        writer.close();

    }catch (Exception e){
        e.printStackTrace();

    }
}

Et n'oubliez pas d'ajouter des écritures sur le stockage externe ET des autorisations de lecture dans le manifeste:

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
16
Sandeep dhiman

aucun fichier n'est écrit ni sur le téléphone ni sur l'émulateur.

Oui il y a. Il est écrit dans ce que le SDK Android appelle stockage interne . C’est pas ce que vous en tant qu’utilisateur considérez comme «stockage interne» et vous, en tant qu’utilisateur, ne pouvez pas voir ce qui se trouve dans le stockage interne d’un périphérique (à moins qu’il soit root).

Si vous voulez écrire un fichier où les utilisateurs peuvent le voir, utilisez stockage externe .

Ce type de sujet de développement Android de base est traité dans n'importe quel livre sur le développement d'applications Android.

8
CommonsWare

Enregistrer dans la mémoire interne

        data="my Info to save";
        try {
           FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
           fOut.write(data.getBytes());
           fOut.close();
           Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
        }
        catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
        }

Lire à partir de la mémoire interne

      try {
           FileInputStream fin = openFileInput(file);
           int c;
           String temp="";
           while( (c = fin.read()) != -1){
              temp = temp + Character.toString((char)c);
           }
           tv.setText(temp);
           Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
        }
        catch(Exception e){
        }
1

Avez-vous demandé la permission d'écrire sur un stockage externe? 

https://developer.Android.com/training/basics/data-storage/files.html#GetWritePermission

Votre bloc try\catch avalise peut-être une exception qui pourrait vous expliquer le problème. 

En outre, vous ne semblez pas définir le chemin dans lequel enregistrer.

par exemple: Android comment utiliser Environment.getExternalStorageDirectory ()

0
Kuffs