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 :

Ecrire à un endroit précis dans un fichier


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 24
    Par défaut Ecrire à un endroit précis dans un fichier
    Bonjour à tous.

    J'aimerais écrire à une ligne précise dans un fichier.
    J'ai regardé cette doc (et d'autres) de ce site sur l'écriture dans un fichier, et grace à ça :
    - je sais comment écrire dans un fichier (au début ou à la fin) avec des bufferedWriter
    - je sais comment repérer avant quelle ligne je veux écrire grâce au Scanner.

    Mais le problème, c'est que quand j'ai repérer ma ligne, je sais pas comment dire au tampon d'aller écrire à cet endroit là.

    Je vois qu'un moyen, et qui me plait pas C'est de recopier tout le fichier ligne par ligne dans un nouveau fichier, d'insérer le texte que je veux au bon endroit quand je rencontre la ligne, et de réécrire la fin du fichier... Mais je trouve pas ça très "propre" Si quelqu'un à une meilleure solution, je suis preneur, sinon je ferais comme ça...

    Merci

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par jklms Voir le message
    Je vois qu'un moyen, et qui me plait pas C'est de recopier tout le fichier ligne par ligne dans un nouveau fichier, d'insérer le texte que je veux au bon endroit quand je rencontre la ligne, et de réécrire la fin du fichier... Mais je trouve pas ça très "propre" Si quelqu'un à une meilleure solution, je suis preneur, sinon je ferais comme ça...
    C'est pourtant la solution
    Il n'y a rien de "sale" là dedans


    a++

  3. #3
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 24
    Par défaut
    je veux bien te croire mais quand le fichier est supra long c'est pas terrible nan?

    De toute facon, si y'a pas d'autres solutions, y'a qu'à coder comme ça


    Merci!

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    C'est quoi super-long pour toi ?


    A moins de vouloir remplacer une chaine par une autre chaine strictement de la même taille, c'est bel et bien la meilleur solution, que ce soit d'un point de vue pratique ou performance.


    L'autre solution consiste à charger le fichier totalement en mémoire (dans un StringBuilder par exemple), à le modifier, puis à écrire le tout à nouveau dans le fichier...


    a++

  5. #5
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 24
    Par défaut
    ben, je sais pas trop, mais je pensais qu'entre recopier complètement un fichier pour ajouter 3 lignes et écrire directement "au-milieu", la deuxième était plus performante, mais comme de toute facon on peut pas faire autrement (et que je viens de finir de le coder surtout )...

    Merci en tout cas pour tes réponses rapides

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par jklms Voir le message
    ben, je sais pas trop, mais je pensais qu'entre recopier complètement un fichier pour ajouter 3 lignes et écrire directement "au-milieu", la deuxième était plus performante,
    Un fichier c'est un fichier. Si tu veux écrire "au milieu" ça veut dire que tu dois d'un seul coup avoir de la place "au milieu" pour y mettre des trucs, donc espacer "le début" et "la fin," et cela ne peut se faire qu'en réécrivant "la fin" en entier un peu plus loin que là où elle était.
    Il serait possible en théorie de ne pas se taper ce boulot sur "le début." Mais c'est abominable à exprimer, et vu que tu n'as de toute façon pas le choix pour la moitié du boulot, ça n'en vaut généralement pas la peine.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Rechercher et remplacer une chaine à un endroit précis dans un fichier
    Par david2109 dans le forum Shell et commandes POSIX
    Réponses: 17
    Dernier message: 26/08/2013, 22h35
  2. Réponses: 1
    Dernier message: 18/08/2011, 18h03
  3. Ecrire à un endroit précis dans un fichier txt
    Par fraid49 dans le forum Général Python
    Réponses: 2
    Dernier message: 02/10/2008, 09h53
  4. Ecrire à un endroit précis d'un fichier texte
    Par sisco97 dans le forum Langage
    Réponses: 6
    Dernier message: 27/04/2007, 19h44
  5. Ecrire à un endroit précis dans un fichier texte
    Par zemeilleurofgreg dans le forum Delphi
    Réponses: 4
    Dernier message: 26/06/2006, 21h51

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