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

Langage Java Discussion :

Modification de fichier texte à un endroit précis du fichier


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut Modification de fichier texte à un endroit précis du fichier
    Bonjour,

    Je voudrais écrire un programme pour modifier une partie d'un fichier texte. Seulement, cette modification ne doit avoir lieu qu'à un certain endroit de ce fichier.

    Comment pourrais-je m'y prendre pour "détecter" efficacement cet endroit en me baladant dans le fichier ? Je dois detécter et supprimer deux chaînes du type

    et au milieu d'une suite de chaînes de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (idfx,idfx,0),(idfx,idfx,0),(idfx,idfx,0),(idfx,idfx,0),(idfx,idfx,0),...
    les "idf" sont des entiers, idf1 et idf2 sont les entiers recherchés, et idfx sont des entiers quelconques.

    Il y a d'autres chaînes quelconques dans mon fichier.

  2. #2
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taString.replace("(idf1,idf2,0),", "").replace("(idf2,idf1,0),", "");
    ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Oui mais c'est un fichier, donc la seule manière d'avoir une variable String est de lire ligne à ligne. Mais comment faire dans le cas où ma chaîne se trouve coupée en deux sur deux lignes différentes ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Je ne vais quand même pas déclarer une String qui me fera tout mon fichier pour réécrire tout d'un coup, je vais me faire taper sur les doigts !

  5. #5
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Ton fichier est si long que ça? Tu as tant de contraintes de perfs que ça?

    Mieux vaut ne pas trop présumer des perfs de la JVM...

    Tu veux te lancer dans de la lecture/écriture de streams en parallèle? Pour gagner quoi combien de temps si c'est bien codé ou en perdre combien si c'est codé à l'arrache? Au niveau lisibilité et maintenabilité du code, quelles conséquences?
    Plein de bonnes questions à se poser quand on veut passer par de l'optimisation apriori...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Mes fichiers font entre 2 et 5 Ko. Pour la mesure des différences de perfs, j'ai pas ma calculette sur moi.
    On m'a simplement appris à ne pas manipuler de gros buffer sous la forme de String, après si c'est la solution la plus acceptable...

  7. #7
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Fais juste attention à ne pas faire de concaténation de String à coup de + (Ça c'est couteux).
    Un StringBuilder fera parfaitement l'affaire.

    Niveau perfs avec des fichiers de 2 à 5 ko, la différence sera imperceptible. A part si ton process est appelée 50 fois par seconde.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Non c'est appelé très rarement au cours de l'exécution. StringBuilder j'ai jamais utilisé, je vais regarder la doc pour voir. Merci de ton aide

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/04/2015, 09h35
  2. Ajouter du texte dans un endroit précis du fichier
    Par laiiha dans le forum VB.NET
    Réponses: 5
    Dernier message: 25/06/2014, 14h48
  3. [Débutant] Ouvrir fichier texte à un endroit précis dans une textbox
    Par GuillaumeNcy dans le forum VB.NET
    Réponses: 6
    Dernier message: 29/11/2013, 12h12
  4. Réponses: 6
    Dernier message: 07/06/2011, 11h00
  5. Modifier un fichier texte à un endroit précis
    Par Christophe_ dans le forum C#
    Réponses: 2
    Dernier message: 29/04/2007, 17h48

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