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 Discussion :

Lire/écrire fichier texte existant


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut Lire/écrire fichier texte existant
    Bonjour,
    Donc, tout d'abord, j'arrive à lire et écrire dans mon fichier mais il se trouve dans le répertoire "data:..."
    Le problème est que je ne peux pas l'exporter avec le reste de l'application!
    Le fichier est importé via DDMS et tout fonctionne avec l'émulateur. Mais quand j'installe l'application sur le téléphonne, le fichier n'existe plus! quand j'enregistre il est recréé mais, pour info, le fichier dont j'ai besoin est déjà rempli et il comporte +- 500 lignes que je ne recopierai pas à la main!
    D'ou ma question comment lire/écrire un fichier déjà existant sous android (en java).

    Pour la lecture:

    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
    try
    {			
    	liste = new ListeProduits();
     
            //lu à partir de data/data etc.
    	InputStream instream = this.openFileInput("monFichier.txt");
     
    	InputStreamReader inputreader = new InputStreamReader(instream);
    	BufferedReader buffreader = new BufferedReader(inputreader);
            StringBuilder out = new StringBuilder();    
    	String line;
    	String tmp;
    	String[] champs = new String[3];
    	while (( line = buffreader.readLine()) != null)			      	
    	{			      		
    		out = new StringBuilder();
    		out.append(line);
    		tmp = out.toString();	
    		champs = tmp.split("~");
    		liste.add(new Produit(champs[0],champs[1],champs[2]));
    	}
     
    	instream.close();
    } 
    catch (Exception e) 
    {
    	Toast.makeText(MainActivity.this,e.getMessage() ,  
            Toast.LENGTH_LONG).show();
    }

    Et pour l'écriture:

    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
     
    FileOutputStream fOut = null;
    OutputStreamWriter osw = null;
     
    try
    {
    fOut = openFileOutput("Sogefi.txt",MODE_APPEND);
    osw = new OutputStreamWriter(fOut);
    osw.write("y2222~e2~t2" + System.getProperty("line.separator"));
    osw.flush();
    osw.close();
    fOut.close();
    }
    catch (Exception e)
    {
    Toast.makeText(MainActivity.this, e.getMessage(),
    Toast.LENGTH_LONG).show();
    }
    Voilà, merci d'avance!

  2. #2
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Bonjour,

    A tu bien rentré les autorisations dans le manifeste ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Re,
    En fait non!
    Etant donné que je ne savais pas qu'il en fallait!
    Mais je vais me renseigner...

  4. #4
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Si je ne me trompe pas, il y en à uniquement besoin si tu veux écrire lire sur la carte SD
    Pour la mémoire interne il n'y en à pas besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>[/B]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Hello,
    OK, je vais essayer ça...

    Sinon j'avais trouvé un moyen de contourner le problème. Le dossier "assets"...
    Dans ce dossier je place un fichier (genre sauvegarde); il est installé en même temps que l'application.
    Au démarrage de l'application je lis le fichier qui se trouve dans le dossier "data" mais il n'existe pas encore. Donc levée d'exception et lecture du fichier de sauvegarde et création du fichier dans "data" (try - catch).
    Ensuite chaque modification ou ajout se fait dans le fichier de "data".

    Point positif, j'ai toujours un fichier propre qui attend bien sagement.
    Point négatif, si je change de téléphone je n'ai plus qu'un fichier obsolète!

    Voilà, je vais essayer de bricoler le fichier "manifeste" et je te tiens au courant!
    A bientôt.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Re,
    Donc chose je promise, chose due...
    J'ai bien essayé de bricoler le fichier "manifest" et effectivement ça marche comme je le veux!

    Je pose les fonctions de lecture:


    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
    try
    {	
    	String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
    	File f = new File(baseDir + File.separator + "MyAPK/TextFiles/MonFichier.txt");
    	FileInputStream fiStream = new FileInputStream(f);				 
    	InputStreamReader inputreader = new InputStreamReader(fiStream);
    	BufferedReader buffreader = new BufferedReader(inputreader);
    	StringBuilder out = new StringBuilder();    
    	String line;
    	String tmp;
    	String[] champs = new String[3];
     
            while (( line = buffreader.readLine()) != null)			      	
    	{			      		
    		out = new StringBuilder();
    		out.append(line);
    		tmp = out.toString();
    		champs = tmp.split("~");
    		this.add(new MonObjetPerso(...));
    	}
     
    	fiStream.close();
    } 
    catch (Exception e) 
    {
    	Toast.makeText(context, e.getMessage() , Toast.LENGTH_LONG).show();
    }

    ...et d'écriture:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try
    {
    	FileWriter writer = null;
    	String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
    	String texte = s + System.getProperty("line.separator");
     
    	writer = new FileWriter(baseDir + File.separator + "MyAPK/TextFiles/MonFichier.txt", true);
    	writer.write(texte, 0, texte.length());		
    	writer.close();			
    }
    catch (Exception e)
    {
    	Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
    }
    Bref, merci du coup de main!
    A bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire un fichier text et écrire dans une table oracle
    Par naima2005 dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/12/2007, 11h35
  2. [C# 2.0] lire/écrire fichier texte
    Par damned3 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/11/2006, 17h03
  3. Réponses: 1
    Dernier message: 24/11/2004, 16h54
  4. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22
  5. Réponses: 2
    Dernier message: 26/05/2004, 17h53

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