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

C# Discussion :

Traitement des fichiers


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Par défaut Traitement des fichiers
    Bonjour,

    est ce que c'est possible d'ouvrir deux flux (stream) différents pour un même fichier en même temps ?

    car j'ai essayé ça il déclenche une exception "le processus est au cours d'utilisation par un autre processus".

    si vous avez des idées n'hésitez pas de m'aider.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Qu'est-ce que tu cherches à faire exactement ? Si c'est 2 flux en lecture, ça ne doit pas poser de problème a priori. Si l'un des 2 est en écriture, par défaut ça ne marche pas, mais tu dois pouvoir le faire en jouant sur le paramètre FileShare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // ouvrir le fichier en écriture avec FileShare.Read pour autoriser l'ouverture du fichier en lecture
    FileStream writerStream = new FileStream(leFichier, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);
    // ouvrir le même fichier en lecture
    FileStream writerStream = new FileStream(leFichier, FileMode.Open, FileAccess.Read);
    J'ai pas testé donc je suis pas sûr que ça fonctionne, mais ça te montre au moins le principe...

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Par défaut
    je cherche flux de lecture et l'autre en écriture en même temps et lorsque je modifie le flux d'écriture le flux de lecture interprète les changements

  4. #4
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Je crois qu'il est impossible de faire quelque chose comme le code de tomlev et que tu auras toujours une exception de ce type.
    Quelle est la finalité de ta demande ? Car il assez curieux de modifier et de lire en même temps.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Je crois qu'il est impossible de faire quelque chose comme le code de tomlev et que tu auras toujours une exception de ce type.
    Quelle est la finalité de ta demande ? Car il assez curieux de modifier et de lire en même temps.
    Je confirme que c'est possible, mais pas exactement comme j'ai dit : il faut spécifier FileShare.ReadWrite pour l'ouverture en écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                // ouvrir le fichier en écriture avec FileShare.Read pour autoriser l'ouverture du fichier en lecture
                FileStream writerStream = new FileStream(@"D:\Temp\test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
                // ouvrir le même fichier en lecture
                FileStream readerStream = new FileStream(@"D:\Temp\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamWriter wr = new StreamWriter(writerStream);
                StreamReader rd = new StreamReader(readerStream);
                wr.WriteLine("test");
                wr.Flush();
                string s = rd.ReadLine();
                Console.WriteLine(s);
                Console.ReadLine();
                wr.Close();
                rd.Close();
    (attention de bien faire le flush sur le flux d'écriture avant de lire, sinon les données qui viennent d'être écrites ne sont pas encore visibles par le flux de lecture)

    PS: cette fois c'est testé

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Par défaut
    trés bien c 'est testé

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

Discussions similaires

  1. Fonction récursive pour traitement des fichiers
    Par Montor dans le forum Contribuez
    Réponses: 6
    Dernier message: 29/09/2008, 07h45
  2. Traitement des fichiers textes
    Par Julien Dufour dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/08/2008, 15h50
  3. traitement des fichiers
    Par stanley1415 dans le forum Informix
    Réponses: 2
    Dernier message: 30/01/2008, 22h07
  4. DEV-C++ et le traitement des fichiers EXCEL
    Par titos09 dans le forum Dev-C++
    Réponses: 0
    Dernier message: 22/10/2007, 17h11
  5. Réponses: 1
    Dernier message: 24/07/2005, 22h25

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