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 :

Lire et écrire dans un fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut Lire et écrire dans un fichier
    Bonjour,
    Je souhaite parcourir un fichier , et pour certains lignes remplacer des mots par des autres, est il possible en Java de parcourir un fichier ligne par ligne tout en n modifiant certaines lignes?
    Je sais qu'une autre solution qui ne m'arrange pas pour l'instant c d'ouvrir un autre fichier dans lequel je copierai ligne après ligne le contenu du fichier de départ (en n'y mettant bien sur que les lignes modifiées venant du fichier de départ) mais cette solution me coûte beaucoup.
    Pouvez vous m'aider à faire autrement?

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    http://java.developpez.com/faq/java/...eLigneParLigne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ((line = buff.readLine()) != null) {
    System.out.println(line);
    //faites ici votre traitement
    }
    line est un String donc tu peux faire toutes les manipulations propres à cet objet (remplacement de mot par d'autre en faisant parti )

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Merci déjà pour la réponse. Cependant c pas ce que je veux.
    Je vais mieux m'expliquer:
    Je veux récupérer cette ligne en cours , la modifier, (avec un line.replaceAll(...) ) par exemple et remplacer la ligne en cours du fichier par la ligne que je viens de modifier.donc en d'autres termes n'utiliser qu'un seul fichier pour faire de la lecture/modif des lignes.

    PS: Merci pour ton lien, j'y étais déjà.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Les mots à modifier dans la ligne en cours de lecture ne sont pas volumineuses.
    Moi ca me coute bcp de réecrire dans un autre fichier. pour la simple raison que pour rester dans le même répertoire:
    1) je serai obligé de nommer le fichier crée par un autre nom,
    2)Finir le transfert, ensuite virer l'ancien fichier qui a été parcouru.
    3)Ensuite renommer celui que je viens de créer avec le nom du fichier que je viens de supprimer.
    Et c ca qui est coûteux pour moi. Si je peux directement bosser sur un seul fichier et sauver pour qu'il prenne en compte les modifs des lignes que j'ai éffectuées ce serait super aisé et rapide en même temps.
    Donc j'attends vos propositions.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Tout bêtement le StringBuffer fait l'affaire, je dépose le code source, ca pourra tjrs aider qcq:
    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
    public static void readReplace(String fileName, String oldPattern,String replPattern)
    	{
    			String line;
    			StringBuffer sb = new StringBuffer();
    			try {
    			FileInputStream fis = new FileInputStream(fileName);
    			BufferedReader reader = new BufferedReader(new InputStreamReader(
    			fis));
    			while ((line = reader.readLine()) != null)
    			{
    				line = line.toLowerCase();
    				line = line.replaceAll(oldPattern.toLowerCase(),replPattern);
    				sb.append(line + "\n");
    			}
    				reader.close();
    				BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
    				out.write(sb.toString());
    				out.close();
     
    			} catch (Exception e) {
    			}
     
    	}
    @+++

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Sujet traité de multiple fois.
    Pour faire court : si l'ancienne chaîne a la même taille que la nouvelle chaîne, tu peux te contenter de travailler directement sur le fichier d'origine. Sinon, tu n'as pas d'autre choix que de passer par un autre fichier. Ceci n'est pas une limitation de Java mais valable pour l'ensemble des langages de programmation.

    Dans quel sens cela te coûte beaucoup ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

Discussions similaires

  1. Lire et écrire dans un fichier binaire
    Par poche dans le forum C
    Réponses: 17
    Dernier message: 19/03/2007, 16h52
  2. Lire et écrire dans un fichier bin!
    Par poche dans le forum C
    Réponses: 9
    Dernier message: 12/03/2007, 12h42
  3. lire et écrire dans un fichier
    Par karel dans le forum C
    Réponses: 15
    Dernier message: 18/01/2006, 17h24
  4. [FTP] Lire et écrire dans un fichier
    Par dj-julio dans le forum Langage
    Réponses: 49
    Dernier message: 12/01/2006, 11h59
  5. [Rech. Comp.] Lire et écrire dans des fichiers XML
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/08/2005, 20h48

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