Comment obtenir un chemin à partir d'un répertoire dans une application console C#?
Dire que j'ai ce fichier structure
Soultion-> Folder1 -> FileIwant.html
Donc, cela pourrait être quelque chose comme C:\Soultion\Folder1\FilterIwant.html
Maintenant, j'ai besoin de lire ce fichier dans mon dossier de candidature. Je ne peux pas coder en dur depuis quand je la donne à quelqu'un d'autre ils pourraient le mettre sur le lecteur F: ou quelque chose.
Ou lorsque je crée un fichier msi, le chemin peut être complètement différent. Alors, comment puis-je dire peut-être prendre
"Folder1\FilterIwant.html"
et l'utiliser pour obtenir le chemin d'accès au dossier, peu importe où ils l'ont mis?
Modifier
J'ai essayé de Chemin.GetFullPath mais j'ai de la terre dans le bin/debug. Mais mon fichier n'est pas dans ce répertoire. Je pense que c'est un couple de répertoires avant. Aussi, si je fais un fichier msi, j'ai bin/debug?
OriginalL'auteur chobo2 | 2010-07-09
Vous devez vous connecter pour publier un commentaire.
Pourquoi est un fichier qui est utilisé dans le cadre de votre demande n'est pas dans le même dossier que l'application? Il me semble que vous devez définir les propriétés sur le fichier à copier dans le dossier de sortie lorsque vous faites une génération.
Faire qui fera en sorte que votre fichier est dans le dossier bin\debug.
EDIT:
soit ça, ou vous devez placer vos fichiers dans l'un des dossiers spéciaux, de données d'application ou mes documents viennent à l'esprit.
c'est très bien, et il y a des raisons valables pour le faire. en particulier dans un environnement verrouillé. donc, je suggère de regarder à donner votre fichiers une maison dans le dossier AppData quelque part.
OriginalL'auteur Antony Scott
Lorsque Visual Studio compile votre projet, il sera de mettre la sortie dans le
bin\debug
répertoire. Tout le contenu des fichiers que vous souhaitez pour référence doit aussi être envoyée à ces endroits, pour que votre application résidant dans ce répertoire pour pouvoir lire ce fichier.Vous avez deux choix:
Copy to Output Directory
bien sur votreFilterIwant.html
àCopy if newer
; dans ce cas, si le fichier a été modifié, il sera copié dans le répertoire de sortie, et vous devriez être en mesure de référencer et de la charge il you
app.config
, quelque chose commeDataPath
et mettez-le dans votre dossier où se trouve le fichier. À partir de votre application, vous créez alors le nom de chemin complet de ce fichier commePath.Combine(AppSettings["DataPath"], "FilterIwant.html")
- avec cette approche, vous devenez totalement indépendant de l'endroit où le fichier est vraiment, et vous n'avez pas besoin de déplacer quoi que ce soit. Aussi: cela vous donne la possibilité de créer un admin/config utilitaire pour vos utilisateurs, de sorte qu'ils peuvent choisir n'importe quel répertoire qu'ils aiment, et que votre application va trouver ces fichiers.vous devez le configurer une fois pour chaque installation, oui. Mais avoir une config d'entrée vous donne également la possibilité de laisser à l'utilisateur final de modifier eux-mêmes, par exemple à l'aide d'un utilitaire de configuration. Si vous coder en dur le comportement dans votre code, vous n'avez pas cette possibilité
OriginalL'auteur marc_s
Dans mon application console, j'ai commencé avec le répertoire de débogage jusqu'à ce que j'ai trouvé le plus proche parent du dossier que je voulais.
OriginalL'auteur DotNetWala
Vous besoin de l'aide de Système.Io.Chemin classe:
Modifier:
Vous pourriez aussi avoir besoin le répertoire de l'application - c'est là que votre application sera installée:
OriginalL'auteur Anax
Path.GetFullPath
Modifier
La bin/Debug chemin ne sera pas présent lorsque vous exécutez votre application installée (à moins que vous dire précisément le programme d'installation à utiliser ce sous-répertoire, bien sûr).
Mise à jour de la réponse à la correspondance de mise à jour de question.
OriginalL'auteur Stephen Cleary
Vous voulez probablement passer le chemin d'accès complet comme d'un argument de ligne de commande. Vous pourrez ensuite l'argument en utilisant la
args
paramètre de laMain
méthode. Pour convertir un chemin d'accès relatif à l'absolu, vous pouvez utiliserPath.GetFullPath
:}
OriginalL'auteur Dirk Vollmar