Chemin relatif et fermeture

Résolu
gretata
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011
- 7 juin 2007 à 14:41
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
- 8 juin 2007 à 10:44
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

cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
8 juin 2007 à 08:41
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-
3
SatanicPunker
Messages postés
19
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
18 février 2008

7 juin 2007 à 17:46
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.
0
gretata
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

7 juin 2007 à 18:34
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;
0
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
7 juin 2007 à 19:30
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-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

7 juin 2007 à 19:33
je vais éssayé merci
0
gretata
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

7 juin 2007 à 19:48
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.
0
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
7 juin 2007 à 19:57
Donnes voir le code complet...

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

7 juin 2007 à 20:03
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();


}


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

7 juin 2007 à 20:04
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();

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

8 juin 2007 à 10:10
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  
0
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
8 juin 2007 à 10:44
De rien...

<hr />
-Blog-
0