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

Entrée/Sortie Java Discussion :

[Fichier] Modifier la 2ème ligne d'un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut [Fichier] Modifier la 2ème ligne d'un fichier
    bonjour.
    j ai besoin de votre aide.
    j ai un fichier qui contient 3 lignes d'enregistrements, et j voudrai savoir comment faire pour modifier par exemple le deuxieme enregistrement, c a dire comment acceder directement ou avec un parcours du fichier à un enregistrement specifique.
    merci d avance .

  2. #2
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Salut et bienvenue sur les forums de Developpez

    Je ne sais pas si y'a plus simple mais tu peux lire le fichier octet par octet et compter le nombre de '\n' indiquant le retour à la ligne (ça dépend de l'implémentation). Pour la deuxième ligne par exemple, dès que tu trouves le retour à la ligne, tu sais que tu y es.
    Ensuite, pour modifier, tu dois copier ce que tu veux garder dans un fichier temporaire en effectuant la modification lors de l'ajout. Puis tu supprimes l'ancien fichier et renomme le temporaire.

    Nas'

  3. #3
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut pfiuuu
    mdr .. comment vous vous compliquez la viiee !!!

    mon Dieu ! mon Dieu ....

    Tu commence par créer 1 objet File qui symbolisera ton fichier.
    Ensuite, tu crée 1 BufferedReader et 1 PrintWriter à partir de ce fichier.

    Puis tu fais 1 boucle qui lis dans le BufferedReader (utilise readLine() ) et qui insère chaque ligne lue dans un Vector (déclaré au préalable).

    Ensuite, tu ferme ton flux d'entrée (le BufferedReader).

    Tu effectue la modification voulue sur la chaine
    ((String) monVecteurLu.elementAt(1))

    ensuite tu fait un monFichier.delete(); //jsui pas certain que ce soit obligatoire, mais on n'est jamais trop prudent

    puis un monFichier.createNewFile();

    et ensuite tu parcours tout ton vecteur en effectuant :
    monPrintWriter.println((String)monVecteur.elementAt(i));

    tu n'oublie pas de fermer le PrintWriter

    et le tour est joué.

  4. #4
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Je trouve ta méthode plus compliqué mais bon, chacun son truc
    Par contre, ayant abandonné un peu le Java, j'avais oublié qu'il y avait la méthode readLine()

    Nas'

  5. #5
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    j'ai tout écrit, C pr ça que c'est plus long ^^

    Du point de vue du code, ça peut paraître plus compliqué dit comme ça, mais c'est plus naturel, et je pense que les appels disque sont moins nombreux ou alors groupés ..., de plus ,je n'utilise pas de fichier temporaire : je ne prends pas 2 fois le volume nécessaire.

    seule faille : si l'ordi plante entre la suppression du fichier et son écriture, on a perdu toutes les infos.

  6. #6
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Je suis d'accord avec Neptus, la solution qu'il a proposé est plus simple à coder. Cependant, si ca reste un fichier de 3 lignes ca va le faire, si ton fichier fera plusieurs Mo, tout charger en Mémoire, ca va être rude. Si un jour cela devait arriver, pense plutot a ne sauvegarder que les modifications a faire avec leur numero de ligne, et non tout le fichier en entier.

  7. #7
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Salut !
    Bon le plus simple est ceci (selon moi) :
    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
     
    try {
    BufferedReader buf = 
    new BufferedReader(new FileReader(new File("ton path")));/*Créer
    une exception si le fichier cible n'existe pas !
    String temp = null;
    Vector all = new Vector();
    while((temp = buf.readLine()) != null) {
          if(temp.equals("ce que tu cherches")) {/*si la ligne correspond a
    ce que tu cherches*/
                  break;//elle sors de la boucle
          }else {
                all.add(temp);//sinon elle est ajouter au vector
          }
    }
    buf.close();
    FileWriter fw = new FileWriter(new File("ton fichier"));
    //le file writer créer va ECRASER l'ancien contenue
    //pas besoin de supprimmer/recréer le fichier
    for(int i = 0; i < all.size(); i++) {
        fw.write(all.get(i).toString());
    }
    }catch(IOException e) {
    //traitement (je te conseille d'en faire un
    //meme un simple system.out.println....
    }
    Voila, si vous avez un code plus rapide, ou que le mien comporte une erreur, faites le savoir ! Merci.
    Et bonne chance ...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut
    Merci bien les gars, j ai pas encore tester mais c sure ca va beaucoup m'aider ;)

  9. #9
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par Nasky
    tu peux lire le fichier octet par octet et compter le nombre de '\n'
    Java utilise l'unicode donc il me semble que chaque caractère est codé sur 2 octets.Dans ton cas, il faudrait parcourir le fichier deux octets par deux octets.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

Discussions similaires

  1. modifier les données d'une ligne d'un fichier
    Par racnet dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 07/01/2009, 16h17
  2. Modifier une ligne d'un fichier texte
    Par lauben dans le forum C
    Réponses: 2
    Dernier message: 27/05/2006, 12h45
  3. Réponses: 3
    Dernier message: 04/01/2006, 20h53
  4. Modifier un ligne d'un fichier
    Par chickenhuchette dans le forum Linux
    Réponses: 3
    Dernier message: 28/12/2005, 14h38
  5. Modifier une ligne d'un fichier
    Par jula dans le forum Linux
    Réponses: 4
    Dernier message: 08/04/2005, 17h24

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