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 :

Modifier une chaine dans un fichier texte


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut Modifier une chaine dans un fichier texte
    Bonjour,

    je voudrais remplacer cette chaine invc_no="1" par invc_no="0".

    Le code que je fais me permet de trouver à quelle ligne se trouve invc_no="1" dans mon fichier (c'est l'utilisateur qui choisit cela. Le "1" est une variable incrémentée donc elle est unique.)

    Je souhaite ensuite juste remplacer cette chaine par ce que j'ai indiquer plus haut.

    Donc je voudrais parcourir ma ligne et la modifier.

    Comment puis-je faire ?
    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
    try {
     
    					BufferedReader br = new BufferedReader(new FileReader(
    							file));
     
    					TextView supprimer = (TextView) findViewById(R.id.text);
    					String string="invc_no=\""+supprimer.getText().toString()+"\"" ; 
    					String st=null;
    					st=br.readLine();
    					int i=-1;
    					int nbLinesRead = 0;
    					while((st!=null)&&(i==-1)){
    					i=st.indexOf(string);
    					st=br.readLine();
    					nbLinesRead++;
    					}
    					if(i==-1)
    						Toast.makeText(
    								getBaseContext(),
    								"inexistante",
    								2000).show();
    					else
    						Toast.makeText(
    								getBaseContext(),
    								"existe ! caractère= " + i + "ligne= " + nbLinesRead,
    								2000).show(); 
     
     
    					br.close();
    				}


    Je vous remercie pour votre aide !

  2. #2
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut Elements de réponses
    Salut,

    Le problème c'est que tu ouvres ton fichier en lecture donc tu ne pourras pas écrire dedans.

    Ce que je ferais : J'ouvre le fichier comme tu le fais et je le met dans une liste. Je le lis ligne à ligne pour trouver la chaine que tu cherches. Et avec un strreplace je change la ligne.

    Ensuite j'ouvre le fichier en écriture de sorte à le remplacer avec ma liste modifiée. Ta ligne sera remplacée dans ton fichier.

    Tchao !

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut
    Ok mais si je l'ouvre en écriture je peux plus le lire.

    C'est ça qui me pose problème.
    Je n'arrive pas à isoler la ligne.
    J'arrive à avoir le numéro de la ligne que je veux mais récupérer le contenu la modifier et la remplacer j'arrive pas.

  4. #4
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Surtout pas besoin de tout lire en mémoire... un seule ligne est nécessaire:
    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
     
    public void processFile(File fichierSource, String replacePtn, String byPtn)
    {
        // on commence par renommer le fichier en ".bak"
        File fichierBak = new File(fichierSource.getParent(),fichiserSource.getName()+".bak");
        fichierBak.delete();
        fichierSource.renameTo(fichierBak);
     
        boolean success = false;
        BufferedReader is = null;
        PrintStream os = null;
        try {
            is = new BufferedReader(new FileInputStream(fichierBak));
            os = new PrintStream(fichierSource);
     
            String line = is.readLine();
            while (line != null) {
                 line = processLine(line,replacePtn,byPtn);
                 os.println(line);
                 line = is.readLine();
            }
     
            success = true;
        } finally {
            if (is != null) is.close();
            if (os != null) os.close();
            if (!success) {
                 // on remet les fichiers comme ils étaient
                 fichierSource.delete();
                 fichierBak.renameTo(fichierSource);
            }
        }
    }
     
    public String processLine(String line, String replacePtn, String byPtn)
    {
         return line.replaceAll(replacePtn,byPtn); // à définir....
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut
    Ok merci beaucoup à tout le monde !! ca marche !!

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

Discussions similaires

  1. Modifier une ligne dans un fichier text
    Par takizem dans le forum Programmation système
    Réponses: 0
    Dernier message: 07/10/2013, 19h29
  2. modifier une ligne dans un fichier texte
    Par junkie1986 dans le forum Tcl/Tk
    Réponses: 6
    Dernier message: 09/04/2013, 15h17
  3. Chercher et remplacer une chaine dans un fichier texte C
    Par étoile de mer dans le forum Débuter
    Réponses: 6
    Dernier message: 14/11/2011, 11h59
  4. detruire une chaine dans un fichier texte
    Par rober dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 08/11/2006, 09h27

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