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 un fichier en boucle


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Points : 100
    Points
    100
    Par défaut Lire un fichier en boucle
    Bonjour à tous,

    J'aimerais savoir s'il était possible de lire un fichier ligne par ligne et en boucle, sans pour autant le refermer et le réouvrir à chaque fois?

    Merci beaucoup.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je crois que ce qu'il demandait c'est si on pouvait garder le flux de lecture du fichier ouvert même si on est à la fin du fichier, ensuite un autre programme écrit dans le fichier, et cela fait une nouvelle ligne lue par le flux de lecture.

    Il ne me semble pas que cela puisse fonctionner, il faut réouvrir le flux, ou sinon j'aurai pu optimiser mon programme qui fait la même chose (du polling)

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    Je crois que ce qu'il demandait c'est si on pouvait garder le flux de lecture du fichier ouvert même si on est à la fin du fichier, ensuite un autre programme écrit dans le fichier, et cela fait une nouvelle ligne lue par le flux de lecture.
    C'est tout à fait possible de ne pas fermer le fichier. Par exemple pour simuler un "tail -f" :
    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
    		BufferedReader br = new BufferedReader(new FileReader("c:\\in.txt"));
    		try {
    			while (true) {
     
    				// On lit le fichier ligne par ligne :
    				String line;
    				while ( (line=br.readLine()) != null ) {
    					System.out.println(line);
    				}
     
    				// On attend que de nouvelles données soit lisibles :
    				while ( !br.ready() ) {
    					// Avec une pause pour éviter de faire une boucle active :
    					Thread.sleep(100);
    				}
     
    			} 
    		} finally {
    			br.close();
    		}
    Par contre bien sûr cela ne prend en compte que les modifs faite à la fin du fichier...

    a++

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Merci du tuyau!
    Comme toujours adiGuba

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    j'ajouterais, que, de mémoire, sous windows, avec les lock automatique sur les fichiers ouvert, ça empechera à un autre process d'ouvrir le fichier en écriture...

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    j'ajouterais, que, de mémoire, sous windows, avec les lock automatique sur les fichiers ouvert, ça empechera à un autre process d'ouvrir le fichier en écriture...
    Cela rendrait la remarque d'adiGuba caduque pour windows

    Je n'ai pas pu tester, car finalement le fait de garder le flux ouvert n'est pas possible dans mon cas. (polling du syslog avec fichier tournant)

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    j'ajouterais, que, de mémoire, sous windows, avec les lock automatique sur les fichiers ouvert, ça empechera à un autre process d'ouvrir le fichier en écriture...
    Non cela empêchera de le supprimer ou de le renommer, mais on pourra toujours écrire dedans...

    Par contre cela peut bloquer certain programme qui utilise des fichiers temporaires et qui utilise le renommage lors de la sauvegarde...


    De même, si on réécrit le fichier depuis le début on ne récupérera pas toutes les données, mais seulement celle à partir de l'emplacement où on était (à condition que le fichier soit plus long donc).

    Sous Linux il est possible de supprimer/renommer un fichier pendant son utilisation, de mémoire :
    • Si on renomme le fichier le mapping se fera toujours. En clair on continuera a lire dans le fichier avec le nouveau nom tant qu'on ne l'a pas fermé (c'est le même fichier).
    • Si on le supprime on pourra continuer à lire dessus (mais il n'y aura plus rien), mais pas sur un éventuel fichier du même nom créé par la suite.


    a++

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Si on le supprime on pourra continuer à lire dessus (mais il n'y aura plus rien), mais pas sur un éventuel fichier du même nom créé par la suite.
    Pour lever l'ambiguité de la phrase, il n'y aura plus de fichier (disparu), mais le programme qui l'a ouvert avant l'effacement continue à savoir lir tout ce qu'il y avait dedans. Le fichier est détaché du système de fichier mais pas encore libéré sur le disque. Ca se traduit comme çà dans un lsof:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lsof | grep test.txt
    java      9080      delbd    3w      REG        8,5   9555638      99166 /tmp/test.txt (deleted)

Discussions similaires

  1. [FMOD] Impossible de lire un fichier en boucle
    Par Theo13 dans le forum FMOD
    Réponses: 0
    Dernier message: 12/06/2012, 02h17
  2. lire et sauver des fichiers en boucle
    Par lyraastriel dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/02/2010, 19h29
  3. [Débutant] Lire des fichiers .mat en boucle
    Par niepoc dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/06/2008, 14h41
  4. [Débutant] Lire des fichiers texte en boucle dans un programme
    Par niepoc dans le forum MATLAB
    Réponses: 6
    Dernier message: 20/05/2008, 19h05
  5. Réponses: 1
    Dernier message: 18/02/2008, 20h21

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