Stocker/accéder à un fichier de mon application

Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 - 17 août 2009 à 12:27
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 24 août 2009 à 11:19
Bonjour,


Je voudrais stocker un fichier dans un package que j'ai créé dans mon application (clique droit sur le projet=>ajouter =>Nouveau Dossier)
J'ai essayé avec :
1)FileStream stream = new FileStream("/MyNewRep/MyNewFile.xml", FileMode.Create);
2) Uri ResUri = new Uri("/MyNewRep/MyNewFile.xml", UriKind.Relative);
FileStream stream = new FileStream(ResUri.AbsolutePath+ "/MyNewFile.xml, FileMode.Create);
Ca ne marche pas
une idée s'il vous plaît
merci pour votre aide

18 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 09:21
Bonjour,

Si je comprend bien ton message, tu développes un site en ASP.Net (C#).
Tu dois donc résoudre le chemin de ton fichier afin de le créer au bon endroit.
Il te faut utiliser la fonction Server.MapPath. Ce qui te donne le code suivant:
FileStream stream = new FileStream(Server.MapPath("~/MyNewRep/MyNewFile.xml"), FileMode.Create);

Essayes avec ceci et tiens nous au courant,

Bonne journée,


Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 09:36
Merci pour ta réponse,
Je développe plutôt une application winform, mon application contient plusieurs dossiers (package)
Quand je créé un nouveau dossier dans mon application (clique droit sur le projet=>ajouter =>Nouveau Dossier) je vaudrais connaître comment accéder à ce nouveau dossier à partir de mon code
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 09:51
Au temps pour moi !

Qd j'ai vu Uri, j'ai de suite pensé à un site Asp.Net. Ce que je t'ai dit n'est donc pas pertinent.
Tes tests ne doivent donc pas marcher car le dossier n'existe pas dans le répertoire de sortie.
A voir: System.IO.FileStream.
Le simple ajout du dossier dans ton projet ne suffit pas car le répertoire n'est pas généré en sortie (.\bin\debug).

Ceci expliquerai pourquoi ton test n'est pas concluant. Tu dois surement obtenir une exception de type "DirectoryNotFoundException".

Alors, je ne sais pas comment obliger la création de ce répertoire en sortie (mis à part en codant avec le Directory.CreateDirectory).
Ou sinon, en mettant ton fichier "MyNewFile.xml" dans ton projet et en "settant" la propriété "Copy to output directory" à "Copy always" (ou "Copy if newer").

Ensuite, ta création de fichier devrait fonctionner.

PS: à moins qu'il existe un méthode qui créé le répertoire du fichier s'il n'existe pas.

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 10:19
J'ai essayé de faire un truc comme ca :
String Parentpath = Application.StartupPath;
Parentpath = Parentpath.Substring(0, Parentpath.IndexOf("\\bin\\Release")); //Monter dans l'arborescence pour ce positionné sur le répertoire parant(de tous le projet et pas le rep de l'exe) .
Puis je cree mon dossier tmp (clique droit sur le projet=>ajouter =>Nouveau Dossier)
Puis pour accéder à mon nouveau dossier tmp je fais
Parentpath + "\\Tmp\" +Myfile.ext
Ça marché mais je saispas si c'est la bonne solutuon ou pas
0

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

Posez votre question
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 10:33
Re,

Tu n'as pas besoin de récupérer le path: Application.StartupPath car ton exe est déjà dedans et tu peux travailler en chemin relatif.
Il te faut juste créer le répertoire s'il n'existe pas.
if(!Directory.Exists("MyNewRep"))
{
Directory.CreateDirectory("MyNewRep");
}

Puis tu pourras créer le fichier:
FileStream stream = new FileStream("MyNewRep/MyNewFile.xml", FileMode.Create);

Voila tout,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 10:39
Mais ca va le crée dans le dossier de l'exe Myproject/bin/release ce que je ne veux pas faire
C pour celaque je fais
Parentpath = Parentpath.Substring(0,Parentpath.IndexOf("\\bin\\Release"));
Pour sortir du rep là où il ya l'exe et se positionner su la racine :
Myproject
donc parent path contient maintenant Myproject que je le concatene avec MyNewRep
Parentpath + "\\MyNewRep\" +Myfile.ext
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 10:43
Oui, sauf que lorsque tu déploieras ton application, elle ne sera pas dans un dossier "bin\Release" mais dans le dossier d'installation.
C'est pourquoi les fichiers créés doivent généralement se trouver:
- dans le répertoire et sous-répertoire de l'exe
- dans "Mes documents"
- dans le répertoire Temporaire de l'utilisateur (User data)
- ou dans un répertoire demandé à l'utilisateur lors de la génération du fichier

Enfin, c'est toi qui vois mais je ne vois pas l'intérêt d'une telle action :)

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 14:24
Quand je dépolirais mon application cher un client
J'ai fait copie du dossier Release non ??
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 14:32
C'est une façon de faire (si tu ne fais pas de projet de setup).
Mais si tel est le cas (copie du dossier release), la ligne de code suivante:
Parentpath = Parentpath.Substring(0,Parentpath.IndexOf("\\bin\\Release")); 

plantera en beauté

C'est pourquoi je te conseille d'utiliser d'autres répertoires (comme je t'ai cité dans le commentaire précédent).
Ou sinon, tu peux mettre le dossier écrit en dur dans le fichier de configuration (app.config).
Comme cela, tu pourras modifier facilement le répertoire selon l'utilisateur.


Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 14:41
"si tu ne fais pas de projet de setup"

Peux-tu m?expliquer s'il te plaît comment faire un projet de setup
Car j'ai essayé de déployé mon application sur le serveur en cliquant droit sur le projet déployé, j'ai spécifié le chemin de déploiements
Sauf que quand je modifier le fichier ?exe.config il ne prend pas en compte la nouvelle chaine de connexion que j'ai modifié
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 14:44
Google est ton ami :
- Lien 1
- Lien 2

Voili !

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 15:27
Merci pour les liens !
En fait je travail en VS 2008 c#
Le projet de déploiement je le créé à part ou je l'ajoute à mon application,
Car j'ai fait cic droit sur ma solution =>ajouter nouveau projet, il me propose pas le type projet de déploiement et configuration

Merci de m?apporter quelques éclaircissements
merci pour votre aide
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 15:34
C'est toi qui voit


Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 15:35
jn'ai pas compris je veux comprendre s'il vous plaît
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 août 2009 à 15:43
Ah dsl, j'avais pas tout lu

Si tu n'as pas le type de projet setup, c'est qu'il n'existe pas dans ta version de Visual Studio (peut-être une version express, non ?).


Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
21 août 2009 à 15:46
c'est une version Profesionnal edition
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
24 août 2009 à 11:14
Bonjour
J'ai crée un répertoire dans le dossier de l'exe de l'application
Dans ce répertoire après avoir mettre un fichier je demande à un processus de me l'ouvrir
process.StartInfo.FileName = "UserData/tmp/" +MyFileName
lors de l'execusion il genere l'exeption FileNotFound
est que je doit passe au process.StartInfo.FileName le chemin absolu du fichier à ouvrir
tel que Application.StartupPath+"UserData/tmp/" +MyFileName
merci
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 août 2009 à 11:19
Bonjour,

Je n'aurais pas le temps de me pencher sur ta question. Je te conseille de poser cette question dans un nouveau sujet.

Bonne journée,


Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Rejoignez-nous