Chemin relatif et fermeture [Résolu]

Signaler
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour a tous !!

voila j'ai un problémes au niveau de la lecture d'un fichier pour son chemin relatif, je crois avoir trouver:

String

dir =
Directory.GetCurrentDirectory().ToString();//-- pour trouver le chemin de l'exé

StreamWriter

lesAmis =
new
StreamWriter(dir +
"Amis.txt");

pour fermer : lesAmis.Close();

puis sa : Directory.SetCurrentDirectory(dir);

apres une erreur :
Le processus ne peut pas accéder au fichier 'C:\Documents and Settings\tutu\Bureau\Repertoire\Repertoire\bin\DebugAmis.txt', car il est en cours d'utilisation par un autre processus.

pourtant je le ferme.

si ya quelle qu'un qui a deja eu ce probleme je suis prenuer pour une explication

sur ce bonne journée.              
 

11 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
exemple:

public
class
Program
{
  
public
static
void Main(
string[] args)
   {
      
Program prg =
new
Program();
       prg.Test();
   }

  
public
void Test()
   {
      
Person[] p =
new
Person[10];
       p[0] =
new
Person();
       p[1] =
new
Ami();
       p[2] =
new
Collegue();
       p[3] =
new
Ami();
       p[4] =
new
Famille();
       p[5] =
new
Famille();
       p[6] =
new
Ami();
       p[7] =
new
Person();
       p[8] =
new
Ami();
       p[9] =
new
Famille();

      
if (p.Length > 0)
       {
             
using (
StreamWriter lesAmis =
new
StreamWriter(
Path.Combine(
Directory.GetCurrentDirectory(),
"Amis.txt")))
             
using (
StreamWriter lesFamilles =
new
StreamWriter(
Path.Combine(
Directory.GetCurrentDirectory(),
"Familles.txt")))
             
using (
StreamWriter lesColegues =
new
StreamWriter(
Path.Combine(
Directory.GetCurrentDirectory(),
"Colegues.txt")))
              {
                    
foreach (
Person pers
in p)
                     {

                            if (pers
is
Collegue) pers.Save(lesColegues);
                           
else
if (pers
is
Ami) pers.Save(lesAmis);
                           
else
if (pers
is
Famille) pers.Save(lesFamilles);
                           
// else ...
                     }
              }
       }
   }
}

public
class
Person
{
      
public
void Save(
StreamWriter s)
       {
              s.WriteLine(
"OK " +
this.GetType());
       }
}

public
class
Collegue :
Ami
{
}

public
class
Ami :
Person
{
}

public
class
Famille :
Person
{
}

<hr />
-Blog-
Messages postés
19
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
18 février 2008

Salut, peut-être qu'il est fermé ton streamwriter mais il existe toujours avec en paramètre ton fichier.  Essaye de le mettre a null après ton close, peut-être ça marchera, mais c'est possible que non.
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

non, sa ne change rien mais merci quand même, je présise que je suis en application console, et je crois que c'est mon chemin qui ne va pas;
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Salut,

using (
StreamWriter sw =
new
StreamWriter(
Path.Combine(
Directory.GetCurrentDirectory(),
"Amis.txt")))
{
   sw.Write(
"salut les amis");
}

Ta dernière instruction, le SetDirectory, ne sert à rien.

<hr />
-Blog-
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

je vais éssayé merci
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

merci pour le chemin relatif nickel,

mais toujours ce message d'ereur
Le processus ne peut pas accéder au fichier 'C:\Documents and Settings\tutu\Bureau\Repertoire\Repertoire\bin\DebugAmis.txt', car il est en cours d'utilisation par un autre processus.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Donnes voir le code complet...

<hr />
-Blog-
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

public






void
Sauvegarde(){


// String dir = Directory.GetCurrentDirectory().ToString();






if
(NbPers != 0){


StreamWriter
lesAmis =

new



StreamWriter
(

Path
.Combine(

Directory
.GetCurrentDirectory(),

"Amis.txt"
));


StreamWriter
lesFamilles =

new



StreamWriter
(

Path
.Combine(

Directory
.GetCurrentDirectory(),

"Familles.txt"
));


StreamWriter
lesColegues =

new



StreamWriter
(

Path
.Combine(

Directory
.GetCurrentDirectory(),

"Colegues.txt"
));


for
(

int
i = 0; i < NbPers; i++){


if
(

Convert
.ToString(Rep[i].GetType()) ==

"Repertoire.Colegue"
){

Rep[i].sauvegarde(lesColegues);

}


if
(

Convert
.ToString(Rep[i].GetType()) ==

"Repertoire.Amis"
){

Rep[i].sauvegarde(lesAmis);

}


if
(

Convert
.ToString(Rep[i].GetType()) ==

"Repertoire.Famille"
){

Rep[i].sauvegarde(lesFamilles);

}

}

lesAmis.Close();


//--fermeture du fichier quant on n'a fini d'entrée le contenue du tableau de personne dans le fichier

lesFamilles.Close();


lesColegues.Close();


}


}
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

et celle la ce lance au chargement de l'apllication:

public

void Charger(){

String n, pr, port, mel, tel, adr;NbPers = 0;

//-- chargement des amis

StreamReader Fichier_Personne =
new
StreamReader(
@"Amis.txt");

String ligne = Fichier_Personne.ReadLine();

while (ligne !=
null){
n Fichier_Personne.ReadLine(); pr Fichier_Personne.ReadLine(); port = Fichier_Personne.ReadLine(); mel = Fichier_Personne.ReadLine(); tel = Fichier_Personne.ReadLine();

Rep[NbPers] =

new
Amis(n, pr, port, mel, tel);NbPers++;

}

//-- chargement des familles Fichier_Personne =

new
StreamReader(
@"Familles.txt");ligne = Fichier_Personne.ReadLine();

while (ligne !=
null){
n Fichier_Personne.ReadLine(); pr Fichier_Personne.ReadLine(); port = Fichier_Personne.ReadLine(); mel = Fichier_Personne.ReadLine(); tel = Fichier_Personne.ReadLine(); adr = Fichier_Personne.ReadLine();

Rep[NbPers] =

new
Famille(n, pr, port, mel, adr, tel);NbPers++;

}

//-- chargement des colegues Fichier_Personne =

new
StreamReader(
@"\Colegues.txt");ligne = Fichier_Personne.ReadLine();

while (ligne !=
null){
n Fichier_Personne.ReadLine(); pr Fichier_Personne.ReadLine(); port = Fichier_Personne.ReadLine(); mel = Fichier_Personne.ReadLine();

Rep[NbPers] =

new
Colegue(n, pr, port, mel);NbPers++;

}

Fichier_Personne.Close();

}
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

Merci merci beaucoup sa fonctionne super bien, maintenent je ferais comme sa pour les fichiers, et merci pour le "is" avec get_type() défois sa fonctionner

en tout cas merci beaucoup de votre aide, c'est super sympa

bonne journée  
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
De rien...

<hr />
-Blog-