dire que j'ai cette structure de fichier p>
soultion-> Dossier1 -> FileIwant.html P>
Cela pourrait être quelque chose comme C: \ Soultion \ folder1 \ filteriwant.html p>
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. P>
ou lorsque je crée un fichier MSI, le chemin peut être complètement différent. Alors comment puis-je dire peut-être prendre p>
"folder1 \ filteriwant.html" p>
et utiliser cela pour obtenir le chemin du dossier indépendamment de l'endroit où ils le mettent? P>
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? p>
6 Réponses :
bin / Debug em> 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). P>
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à.
Vous avez besoin de l'aide de System.IO.Path < / a> classe: GetfletLPath: renvoie le chemin absolu pour la chaîne de chemin spécifiée. P>
blockQuote> Vous avez peut-être également besoin du répertoire d'applications - c'est ici que votre application sera installée: p>
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 } p> p> args code> de la méthode principale code> principale. Pour convertir un chemin relatif en un absolu, vous pouvez utiliser
chemin.getfullPath code>:
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. P>
En faisant cela vous assurer que votre fichier em> dans le dossier bin \ debug. P>
EDIT:
que ce soit ou vous devez placer vos fichiers dans l'un des dossiers spéciaux, données d'applications strong> ou mes documents strong> à l'esprit. p>
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.
Lorsque Visual Studio compilait votre projet, il mettra la sortie dans le répertoire Vous avez deux choix: p>
ou p>
BIN \ DEBUG code>. 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. P>
Copier sur la propriété CODE> de la propriété de votre
filteriwant.html code> à
Copier si plus récent code>; 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 li>
ul>
app.config code>, quelque chose comme
datapath code> 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") code> - 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. Li>
ul>
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é
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.