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 :

Création fichier puis erreur dans l'ouverture en lecture


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 40
    Points
    40
    Par défaut Création fichier puis erreur dans l'ouverture en lecture
    Bonjour,

    Au départ de mon application je teste si le fichier dans lequel je veux travailler existe, sinon je le crée :
    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
     
    public ModeleProgramme(string nomFichier) {
                try {
                    string n = Environment.CurrentDirectory;
                       this.chemin = n +"\\" + nomFichier;
                    if (!File.Exists(this.chemin)) {
                        File.Create(nomFichier);
                    }
                    this.nomFichier = nomFichier;
     
                }
                catch (Exception e) {
                    MessageBox.Show(e.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
    }
    puis après je souhaite lire ce fichier (qui vient d'être crée ou non)
    si mon fichier vient d'être crée il ne veut pas ouvrir mon fichier en lecture il me dit le fichier est déjà en cours d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public Boolean ouvrirLecture(){
                try{
                    this.lireDoc = new StreamReader(chemin);
                    return (true);
                }
                catch (Exception e) {
                    return (false);
                }
            }

    voici l'erreur, sur le new StreamReader
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Interception de System.IO.IOException
      Message="Le processus ne peut pas accéder au fichier 'D:\\Mes documents\\Divers\\Scolarite\\BTS Informatique\\PTI 4(gestionnaire de contenu)\\GestionnaireDeContenu\\GestionnaireDeContenu\\bin\\Debug\\Divers', car il est en cours d'utilisation par un autre processus."
    Je pensais à un attribut dans lequel je mettrais si mon fichier vient d'être ou non mais cela me parait un peu de la bidouille
    Merci de votre aide.

  2. #2
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour,

    Est-ce que par hasard le problème ne viendrait pas de ça :


    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
    public ModeleProgramme(string nomFichier) {
                try {
                    string n = Environment.CurrentDirectory;
                       this.chemin = n +"\\" + nomFichier;
                    if (!File.Exists(this.chemin)) {
                        File.Create(nomFichier);
                    }
                    this.nomFichier = nomFichier;
                    
                }
                catch (Exception e) {
                    MessageBox.Show(e.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
    }
    Si tu essayais plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    File.Create(this.chemin)
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  3. #3
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Yop.

    Au passage, tu peux remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.chemin = n +"\\" + nomFichier;
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.chemin = Path.Combine(n, nomFichier);
    Plus propre et plus secure à mes yeux (pas besoin de t'embêter à savoir si ton répertoire se termine par un '\' ou pas)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Tout d'abord merci pour vos réponses rapides mais j'ai trouvé d'où provenait l'erreur.
    Dans le constructeur en créant le fichier un flux a été ouvert et au moment où je voulais lire dans ce fichier le flux n'avait pas été fermé, d'où l'erreur.

    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
    public ModeleProgramme(string nomFichier) {
                try {
                    string n = Environment.CurrentDirectory;
                       this.chemin = n +"\\" + nomFichier;
                    if (!File.Exists(this.chemin)) {
                        File.Create(nomFichier);
                    }
                    this.nomFichier = nomFichier;
                    
                }
                catch (Exception e) {
                    MessageBox.Show(e.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
    }
    j'ai changé par ça tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File.Create(this.chemin).Close();
    Merci à tous pour votre aide.

    PS : merci eusebe19 pour la petite astuce

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

Discussions similaires

  1. erreur dans l'ouvertur d'un fichier à partir du disque dur
    Par nR.mEcs0ft dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 02/08/2010, 12h41
  2. création de composant erreur dans function
    Par OutOfRange dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/01/2009, 14h48
  3. Réponses: 5
    Dernier message: 01/04/2008, 12h00
  4. Création fichier excel retourné dans le navigateur
    Par progamer54 dans le forum JSF
    Réponses: 4
    Dernier message: 27/03/2007, 11h50

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