IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Studio Java Discussion :

[Android Studio]Ecrire un fichier texte


Sujet :

Android Studio Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut [Android Studio]Ecrire un fichier texte
    Bonjour

    j'essaie de créer un fichier .txt pour sortir des infos (un rating d'une RatingBar) de mon appli et aller les rechercher sur le téléphone par après

    - donner la permission dans AndroidManifest.xml pour écrire le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    </intent-filter>
    - appel de la classe (le rating apparaît bien dans un TextView)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writeToFile(String.valueOf(rating));
    -écrire le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     private void writeToFile(String data) {
           try {
                OutputStreamWriter outputStreamWriter = new OutputStreamWriter(this.openFileOutput("testAndroid.txt", Context.MODE_APPEND));
               outputStreamWriter.write(data);
                outputStreamWriter.close();
                Toast.makeText(this, "fichier écrit", Toast.LENGTH_LONG).show();
           }
            catch (IOException e) {
                Log.e("Exception", "File write failed: " + e.toString());
            }
       }
    Je ne trouve pas du tout ce fichier: où devrait-il apparaître ? Le toast apparaît bien en tout cas.
    Il ne faudrait pas ajouter ceci quelque part ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File path = context.getExternalFilesDir(null);
    File file = new File(path, "my-file-name.txt");

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Bonjour,

    L'utilisation de openFileOutput(...) te permet de créer un fichier privé uniquement accessible à partir
    de ton application. Il est situé à l'adresse /data/data/package.de.votre.l_.pplication/. Le soucis est que
    ce repertoire n'est accessible que si votre smartphone est routé !

    Vous l'avez souligné, une solution peut-être ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      File chemin = this.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
                File fichier = new File(chemin,"fichier.txt");
                fichier.createNewFile();
    Ainsi le fichier est crée dans un repertoire associé à votre application mais cette fois public

    /sdcard/Android/data/com.android.votre.app/files/Downloads/fichier.txt par exemple.

    __salut !
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Exact

    A part le "createNewFile" qui ne sert à rien (sauf à "reserver" le fichier en cas d'opération atomiques).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Merci à vous deux
    Mais je n'ai pas été clair du tout: je n'ai pas de device android sous la main, je développe uniquement sur l'émulateur
    Donc est-ce que quelque chose comme ceci est possible ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      File chemin= File ("C:\\User\\test.txt");
    En tout cas ça ne marche pas

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Finalement, je cherche à écrire un fichier texte sur l'émulateur avec ce 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
    private void writeToFile(String data) {
     
            try {
                Toast.makeText(this, "ok", Toast.LENGTH_LONG).show();
                File chemin = this.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
                Log.d("TAG", chemin.getPath());
                File fichier = new File(chemin, "fichier.txt");
                FileWriter filewriter = new FileWriter(fichier,false);
                filewriter.write(data);
                filewriter.close();
     
            } catch (IOException e) {
                Log.e("Exception", "File write failed: " + e.toString());
            }
     
        }
    Mais je vais sur l'émulateur, sur la carte SD, je trouve bien l'arborescence /storage/emulated/0/Android/data/com.example.user.MonApp/files/Download
    mais pas de fichier.txt dedans

  6. #6
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2015
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 96
    Points : 53
    Points
    53
    Par défaut
    Bonsoir,

    Voilà un lien qui m'a beaucoup aidé.
    Il faut aller vers le bas.

    http://borntocode.fr/android-le-guid...tre-activites/

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Merci,

    c'est vrai que le tuto est complet par contre, je ne trouve toujours pas ce fichier
    est-ce que ca marche avec un émulateur ?
    est-ce que c'est utile de changer d'appareil virtuel ?

  8. #8
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2015
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 96
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par jeanduri Voir le message
    Merci,

    c'est vrai que le tuto est complet par contre, je ne trouve toujours pas ce fichier
    est-ce que ca marche avec un émulateur ?
    est-ce que c'est utile de changer d'appareil virtuel ?

    Bonjour,

    L'essai que j'en avais fait a été super pour moi.

    Je m'étais fait une appli , un quizz pour apprendre orthographe des mots d'une langue étrangère (le polonais).
    J'enregistrais mes réponses dans ce fichier.
    On pouvait enregistrer une listview.

    Moi qui suis une guiche informatique, je n'avais pas trop buté dessus.


    Bonne chance
    Cela fonctionnait en virtuel sans problème.

  9. #9
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Bonjour Jeanduri,

    Je n'arrive pas à comprendre pourquoi çà ne marche pas !

    Je me rappel que j'avais appelé la méthode createNewFile() sur l'instance

    de la classe File afin de pouvoir voir mon fichier txt être créé. Bien vrai

    que nicroman dit que c'est pas utile ici !

    Est-ce que t'as songé à tester ton code sur un téléphone physique ?

    __salut !
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    L'interêt de "createNewFile" est de créer un ficher de manière atomique (la fonction renvoit vrai si le fichier n'existait pas, et est désormais existant). Pratique dans le cas d'un cache accessible par plusieurs process / threads en même temps. Completement inutile dans le cas d'une écriture.


    Par contre, l'utilisation de "Context.MODE_APPEND" indique qu'on veut écrire à la fin du fichier, ou le créer sinon... Utilisable uniquement par les fonctions:

    Ensuite:
    openFileOutput(fileName,xxxx) et sa contrepartie: openFileInput(fileName) permettent de créer des fichier locaux & privés à l'utilisateur et à l'application. Invisibles depuis une autre application. Ne nécessite aucun droit si mes souvenirs sont bons.

    Si on veut des fichiers visibles par l'utilisateur, d'autres applications, ou encore, accessibles depuis un ordinateur quand le téléphone est branché dessus en USB, il faut utiliser getExternalFilesDir, ou encore get, qui *lui* nécessite des permissions ! (ou Environment.getExternalStorage....() ).

    Après tout marche avec un émulateur comme un téléphone "normal" (à part éventuellement la connexion "usb" )
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Merci à tous

    Finalement, le code suivant marche ...enfin plus ou moins car le fichier se trouve dans la mémoire interne et non pas la carte SD, par contre le dossier qui contient le fichier est créé aussi dans la carte SD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void writeToFile(String data) {
     
            try {
                File chemin = this.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
                File fichier = new File(chemin, "fichier.txt");
                FileWriter filewriter = new FileWriter(fichier,true);
                filewriter.write(data);
                filewriter.close();
     
            } catch (IOException e) {
                Log.e("Exception", "File write failed: " + e.toString());
            }
     
        }
    Si j'ai bien compris, openFileOutput ne sert que dans l'appli cad que si je cherche le fichier dans l'explorer je peux pas le trouver ?

  12. #12
    Membre à l'essai

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9
    Points : 18
    Points
    18
    Billets dans le blog
    1
    Par défaut ecrire un fichier txt sur le telephone et le lire avec son pc
    Bonjour,

    Android 4.4 ou 5.0 rien ne fonctionne

    Voici mes déclarations :
    > manifest.xml
    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.xxxx">
     
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="TEST"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <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_SYNC_SETTINGS" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity><!-- ATTENTION: This was auto-generated to add Google Play services to your project for
         App Indexing.  See <a href="https://g.co/AppIndexing/AndroidStudio" target="_blank">https://g.co/AppIndexing/AndroidStudio</a> for more information. -->
            <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
        </application>
     
    </manifest>
    Et la procédure
    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
       public void onClickenregistrement(View view) {
            try {
                // Instantiate a Date object
                Date dte = new Date();
                String lignes = "";
                File chemin = this.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
                File fichier = new File(chemin, "sondage.txt");
                if (!fichier.exists())
                {
                    FileWriter filewriter = new FileWriter(fichier, true);
                    lignes = "Date" + ";" + "Autre";
                    filewriter.write(lignes);
                    lignes = dte.toString() + ";" + "test";
                    filewriter.write(lignes);
                    filewriter.close();
                }
                else
                {
                    FileWriter filewriter = new FileWriter(fichier, true);
                    lignes = dte.toString() + ";"  + Integer.toString(autre);
                    filewriter.write(lignes);
                    filewriter.close();
                }
     
                Toast msg = Toast.makeText(this, chemin.toString(), Toast.LENGTH_LONG);
     
                msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2);
     
                msg.show();
     
            }
            catch (IOException e) {
                Log.e("Exception", "File write failed: " + e.toString());
            }
    Le fichier se retrouve dans /storage/emuleta/o/..... et on ne peut pas le voir à partir du pc mais je le vois avec l'application ESEXPLORER du téléphone.
    Qu'est ce qui ne va pas ?

    merci d'avance

Discussions similaires

  1. Ecrire dans fichier texte
    Par julien0000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/08/2008, 09h02
  2. Ecrire un fichier texte dans un listbox
    Par chlours dans le forum C++
    Réponses: 0
    Dernier message: 22/04/2008, 11h03
  3. Ecrire/Lire fichier texte
    Par toutounesan dans le forum C++
    Réponses: 37
    Dernier message: 14/09/2007, 22h58
  4. [VBA-E] Ecrire un fichier texte le plus rapidement possible
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/09/2007, 20h51
  5. Ecrire un fichier texte
    Par robertolami dans le forum ASP.NET
    Réponses: 1
    Dernier message: 23/03/2007, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo