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 :

Ecriture parallèle dans un fichier


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut Ecriture parallèle dans un fichier
    Bonjour,

    J'ai une application qui loggue dans un fichier différentes informations.

    J'utilise actuellement la classe java.io.RandomAccessFile.

    Mon problème est le suivant : si je lance plusieurs instances de mon application elles écrivent toutes dans le même fichier (jusque là tout va bien ) or il arrive évidemment que certaines fois la ligne écrite par l'instance 1 soit écrasée par la ligne de l'instance 2.

    Le cheminement :
    1. l'instance 1 (i1) ouvre le fichier de log et se positionne à la fin du fichier, on va dire ligne 10 pour l'exemple
    2. l'instance 2 (i2) ouvre le fichier de log et se positionne aussi à la fin du fichier, donc toujours à la ligne 10
    3. i1 écrit sa ligne par exemple à la ligne 10 : 2010-01-29 08:30:00, Debut synchro
    4. i2 écrit lui aussi sa propre ligne à la ligne 10 : 2010-01-29 08:30:00, No activity
    5. la ligne écrite par i2 écrase le début de la ligne écrite par i1 et comme elle a un retour à la ligne le reste de la phrase de i1 est passé sur une nouvelle ligne. Donc dans mon exemple ro.

    D'où ma question, est-il possible de bloquer l'écriture dans le fichier tant que celui-ci est ouvert par une autre JVM sachant que celà doit fonctionner indifféremment sous unix, windows, linux ?

    Cordialement,
    J

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Pourquoi ne pas utiliser les API log existants? Tu n'as pas besoin de synchroniser pour l'ecriture dans ton fichier log. Peut-etre il y a une raison particuliere?

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 748
    Par défaut
    Citation Envoyé par jemini_fr Voir le message
    D'où ma question, est-il possible de bloquer l'écriture dans le fichier tant que celui-ci est ouvert par une autre JVM sachant que celà doit fonctionner indifféremment sous unix, windows, linux ?
    Oui avec FileLock.

    De plus pour écrire a la fin d'un fichier il est plus simple d'utiliser un FileOutputStream en append plutôt que parcourir le fichier avec un RandomAccessFile.

    Enfin comme le propose ttttnht, tu pourrais utiliser une API de log.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut
    Je n'utilise pas d'API de log car c'est de l'existant. De plus je ne suis pas sûr qu'une API de log puisse gérer mon besoin.

    Effectivement j'ai vu FileLock mais à priori le système se base sur le système de lock de l'OS et celui-ci n'est pas forcément obligatoire .

  5. #5
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 748
    Par défaut
    En effet, mais Windows et Linux gèrent les locks, et je ne connais pas tous les détails des différents UNIX, mais je serais très surpris qu'ils ne le gèrent pas.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut
    Je pense que je vais implémenter un test avec FileLock histoire de voir si ça fonctionne comme on le désire.

    Merci de vos réponses

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

Discussions similaires

  1. Problème d'ecriture arabe dans un fichier texte
    Par gateserv dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 30/08/2008, 12h44
  2. Ecriture multiple dans un fichier Excel
    Par oregos dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/03/2007, 15h50
  3. ecriture lecture dans un fichier
    Par maz dans le forum C
    Réponses: 3
    Dernier message: 19/10/2006, 12h21
  4. [C#]Ecriture/Suppression dans un fichier
    Par torNAdE dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/05/2006, 10h11
  5. Ecriture simultanée dans un fichier
    Par doudou34 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/09/2005, 15h26

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