9
votes

Comment obtenir un chemin d'un répertoire dans une application console C #?

dire que j'ai cette structure de fichier

soultion-> Dossier1 -> FileIwant.html

Cela pourrait être quelque chose comme C: \ Soultion \ folder1 \ filteriwant.html

Maintenant, j'ai besoin de lire ce fichier dans mon application. Je ne peux pas simplement le corriger depuis quand je le donne à quelqu'un d'autre, ils pourraient le mettre sur F: conduire 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 utiliser cela pour obtenir le chemin du dossier indépendamment de l'endroit où ils le mettent?

Modifier

J'ai essayé path.getfullpath mais je termine dans le répertoire bin / débogage. Mais mon fichier n'est pas dans ce répertoire. Je pense que c'est un couple de répertoires avant. De plus, si je fais un fichier MSI aurai-je un répertoire bin / débogage?


0 commentaires

6 Réponses :


1
votes

Path.GetFullPath

Modifier

bin / Debug chemin ne sera pas présent lorsque vous exécutez votre application installée (à moins que vous dites spécifiquement l'installateur d'utiliser ce sous-répertoire, bien sûr).


1 commentaires

Essayé ça. Le chemin finit par être dans le bac / débogage, donc je ne suis pas sûr de quoi faire à ce moment-là.




0
votes

Vous voulez probablement passer le chemin complet comme un argument de ligne de commande. Vous pouvez ensuite obtenir l'argument à l'aide du paramètre args de la méthode principale principale. Pour convertir un chemin relatif en un absolu, vous pouvez utiliser chemin.getfullPath : xxx

}


0 commentaires

6
votes

Pourquoi un fichier qui est utilisé dans le cadre de votre application pas dans le même dossier que l'application? Il me semble que vous devez définir les propriétés de ce fichier à copier dans le dossier de sortie lorsque vous effectuez une compilation.

En faisant cela vous assurer que votre fichier dans le dossier bin \ debug.

EDIT: que ce soit ou vous devez placer vos fichiers dans l'un des dossiers spéciaux, données d'applications ou mes documents à l'esprit.


2 commentaires

Eh bien, j'aime juste avoir mes trucs dans un dossier ne volant pas dans la poubelle quelque part.


C'est bien et il y a des raisons valables de le faire. en particulier dans un environnement verrouillé. Donc, je suggérerais de regarder à donner à vos fichiers une maison dans le dossier Appdata quelque part.



5
votes

Lorsque Visual Studio compilait votre projet, il mettra la sortie dans le répertoire BIN \ DEBUG . Tous les fichiers de contenu que vous souhaitez faire référence doivent également être copiés dans ces emplacements, afin que votre application résidant dans ce répertoire puisse lire ce fichier.

Vous avez deux choix:

  • Soit vous définissez la propriété Copier sur la propriété de la propriété de votre filteriwant.html à Copier si plus récent ; Dans ce cas, si le fichier a changé, il sera copié dans le répertoire de sortie et vous devrez peut-être y réfrir et le charger là-bas

    ou

    • Vous définissez simplement un chemin dans votre app.config , quelque chose comme datapath et définissez-le dans votre dossier dans lequel le fichier réside. Depuis votre application, vous créez ensuite le nom complet du chemin de ce fichier comme path.combine (appsettings ["DataPath"], "filtrantiwant.html") - avec cette approche, vous devenez totalement indépendant de l'endroit où Le fichier est vraiment et vous n'avez pas besoin de bouger autour de rien. En outre: cela vous donne la possibilité de créer une utilitaire d'administration / config pour vos utilisateurs ultérieurement, de sorte qu'ils puissent choisir n'importe quel répertoire qu'ils aiment, et votre application trouvera ces fichiers là-bas.

2 commentaires

Avec la deuxième méthode, vous avez essentiellement pour le configurer sur le droit chemin chaque fois que vous le déployer correctement?


@ Chobo2: Vous devez le configurer une fois pour chaque installation, oui. Mais avoir une entrée de configuration vous donne également la possibilité de laisser l'utilisateur final changer celle-ci, à l'aide d'E.G. un utilitaire de configuration. Si vous coduillez le comportement dans votre code, vous n'avez pas cette possibilité



3
votes

dans mon appel de console, j'ai commencé avec le répertoire de débogage jusqu'à ce que je trouvais le dossier parent le plus proche que je voulais. XXX


0 commentaires