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

VB.NET Discussion :

fichier deja ouvert


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut fichier deja ouvert
    Bonjour,

    J'utilise file.readalllines pour ouvrir le fichier et faire mon traitement, mais le fichier et ouvert je ne peux pas le fermer.
    System.IO.IOException*: 'The process cannot access the file 'C:\test" & "\" & fichier & ".txt' because it is being used by another process.'
    Dois-je crée une copie puis faire mon traitement et après le supprimer? ou il y a une autre solution juste pour de la lecture ( pour info j'arrive à l'ouvrir le fichier .TXT avec le bloc note sans message d'erreur) ?


    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If IO.File.Exists("C:\test" & "\" & fichier & ".txt") Then
     
                        Dim lignes = System.IO.File.ReadAllLines("C:\test" & "\" & fichier & ".txt")

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    File.ReadAllLines ne laisse pas le fichier ouvert.
    C'est écrit explicitement dans la documentation :
    Citation Envoyé par https://learn.microsoft.com/
    Opens a text file, reads all lines of the file into a string array, and then closes the file.
    https://learn.microsoft.com/en-us/do...tframework-4.8

    Donc soit ton fichier est déjà ouvert par un autre processus (pas le tien).
    Et dans ce cas, il y a des chances que tu ne puisse pas en faire une copie non plus.

    Soit, tu le lis ailleurs avec une autre méthode.
    Attention à ne pas confondre File.ReadAllLines et File.ReadLines.

    En complément, si le processus qui utilise le fichier l'autorise, tu peux utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<String> lines = new List<string>();
    using (var stream = File.Open("log.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (var reader = new StreamReader(stream))
    {
        while (!reader.EndOfStream)
       {
            lines.Add(reader.ReadLine());
       }
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut
    Le fichier est ouvert par un autre processus autre que mon programme.
    Pourtant j'arrive à l'ouvrir avec un bloc note, j'ai pas de message.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Le bloc note ne remonte pas d'erreur car il lit le fichier en mode partagé. Bref, comme dans l'exemple que je t'ai donné.

  5. #5
    Membre habitué Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 305
    Points : 181
    Points
    181
    Par défaut
    Tu peux t'inspirer de la discussion que j'ai eu avec Phil Rob :

    https://www.developpez.net/forums/d2...-bien-adaptee/

    Par la suite (il y a quinze jours) j'ai découvert ceci : Si le process est extérieur; comme simplement un disque dur (à vérifier pour un disque mémoire RAM en mode lecture). Il te faudra si de temps en temps cela bug prévoir simplement le doublement de la fonction IsOpen ! En effet j'ai découvert (sur un site américain) qu'un DD physique envoi parfois un triple message interne : (A)J'ai fini; (B)mais non j'ai pas fini de quelques dizaines de milli-secondes; (C ) j'ai fini pour de bon ! C'est aléatoire pour le profane. Ca n'est peut être pas le cas général suivant les fabricants.

    Donc la première boucle IsOpen va voir la phase (A) et dira que c'est bon et puis quand on appel le fichier il y a nouveau test intrinsèque et cela arrive au moment de la phase B => catastrophe : message erreur "file allready open" ...

    Donc il suffit de doubler le test IsOpen qui va attendre que phase (B ) soit fini et la c'est bon !

    Mettre une tempo plus longue ne sert à rien suivant la durée aléatoire de l’exécution on peut quand même planter le système ! Et le reste du temps on perd du temps. Ca rime

    Ce n'est pas tout à fait la réponse à ta question espérant que cela pourra t'aider.
    La Connaissance est comme le rire elle est contagieuse en la partageant!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut
    J'ai réussi en testant si le fichier et utilisé alors je crée une copie, je fais mon traitement et à la fin je le supprimer, c'est un peu fastidieux mais ça fonctionne.

  7. #7
    Membre habitué Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 305
    Points : 181
    Points
    181
    Par défaut
    Effectivement c'est une solution.

    Bonne journée
    La Connaissance est comme le rire elle est contagieuse en la partageant!

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Comment tu copies ton fichier s'il est utilisé ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Citation Envoyé par excalybur Voir le message
    Effectivement c'est une solution.

    Bonne journée
    Une solution de Shadok

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Une solution de Shadok
    Bonjour,
    J'ai utilisé filecopy ça a fonctionné pour moi.
    a+

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 107
    Points : 1 611
    Points
    1 611
    Par défaut
    Ce n'est pas logiciel, car si le fichier est ouvert FileCopy génère une IOException
    https://learn.microsoft.com/fr-fr/do...ystem.filecopy

  12. #12
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Citation Envoyé par umfred Voir le message
    Ce n'est pas logiciel, car si le fichier est ouvert FileCopy génère une IOException
    https://learn.microsoft.com/fr-fr/do...ystem.filecopy
    Oui, c'est pour ça que j'ai posé la question :
    Citation Envoyé par popo Voir le message
    Comment tu copies ton fichier s'il est utilisé ?

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 107
    Points : 1 611
    Points
    1 611
    Par défaut
    Citation Envoyé par umfred Voir le message
    Ce n'est pas logiciel, car si le fichier est ouvert FileCopy génère une IOException
    https://learn.microsoft.com/fr-fr/do...ystem.filecopy
    je voulais écrire logique, pas logiciel (mes doigts ont du beugués)

  14. #14
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    LOL, et moi ce sont mes yeux.
    J'avais également lu "logique"

    Quoi qu'il en soit, il est clair que ce n'est pas FileCopy qui a résolu son problème.
    A suivre donc, des fois truccs revienne...

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par popo Voir le message
    LOL, et moi ce sont mes yeux.
    J'avais également lu "logique"

    Quoi qu'il en soit, il est clair que ce n'est pas FileCopy qui a résolu son problème.
    A suivre donc, des fois truccs revienne...
    Je viens de m'apercevoir, en fait une machine vient écrire dedans et le referme donc filecopy fonctionne quand le fichier est libre.
    Donc je me suis pas embêté j'attends qu'il soit libre, pour faire une copie et après je l'analyse.
    Walou merci la team

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 107
    Points : 1 611
    Points
    1 611
    Par défaut
    tu pourrais tout autant faire le ReadAllLines d'origine à la place de la copie, vu que c'est la même problématique

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut
    Non car si le fichier et ouvert par mon application et que la machine veux l'ouvrir, la machine plante.

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 107
    Points : 1 611
    Points
    1 611
    Par défaut
    oui c'est vrai en réfléchissant 10s, pas besoin de l'ouvrir pour faire la copie, donc il devrait rester accessible lors de la copie

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Points : 37
    Points
    37
    Par défaut
    oui effectivement merci du conseil

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/07/2012, 13h51
  2. Verifier si fichier deja ouvert ou non
    Par Paindep dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/07/2010, 13h29
  3. Copier fichier deja ouvert
    Par crochepatte dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/02/2009, 21h41
  4. Fichiers deja ouvert
    Par bakonu dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 01/07/2005, 13h53
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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