web-dev-qa-db-fra.com

Chemin de fichier correct dans l'application console C #

Quelqu'un peut-il me dire comment puis-je obtenir le chemin d'accès au fichier data.xml? Voici où se trouve le fichier:

enter image description here

Voici mon code C # qui vérifie si le fichier existe pour le chemin fourni:

public class Parser
{
    static void Main(string[] args)
    {
        Console.WriteLine(File.Exists("App_Data/data.xml"));
        Console.Read();
    }
}

Je continue à obtenir False, ce qui signifie qu'un tel fichier n'existe pas. Ainsi, les chemins de fichiers que j'ai essayés jusqu'à présent incluent:

"~/App_Data/data.xml"
"/App_Data/data.xml"
"App_Data/data.xml"

S'il s'agissait d'une application Web, je saurais quoi faire en utilisant HttpContext et en accédant au fichier. Mais puisqu'il s'agit d'une application console, je ne le sais pas.

Sur une note connexe, quelle est la différence entre une application console et une application exécutable? Ai-je raison de penser qu'il n'y a pas de différence, car une application console peut être une application exécutable si elle dispose d'une méthode Main?

Merci

14
J86

Vous pouvez également ajouter data.xml à votre répertoire de construction en sortie. Vous devrez cliquer avec le bouton droit sur le fichier et sélectionner Copy if newer ou Copy always pour le Copy to output directory option.

Ensuite, vous pouvez utiliser les éléments suivants:

Console.WriteLine(File.Exists("App_Data/data.xml")); // Should print True

Toutefois, si vous pensez que le fichier data.xml va changer, pointez simplement sur le chemin complet, quelque part en dehors de votre projet (en supposant que App_Data/data.xml soit copié dans C:/Temp):

Console.WriteLine(File.Exists("C:/Temp/App_Data/data.xml")); // Prints True

De plus, pour votre autre question relative à une console et à une application exécutable, le fichier .exe peut être un type d'application différent, tel que console ou wpf ou winforms (c'est ainsi que visual studio les regroupe).

19
Leon

Obtenir le répertoire de travail actuel:

Directory.GetCurrentDirectory() + "/App_Data/data.xml";

Important: App_Data doit figurer dans le même répertoire que votre application. 

Le meilleur moyen d’obtenir votre fichier data.xml est de le transporter avec votre application ou de le sauvegarder, par exemple. dans le répertoire "home" de votre utilisateur (ou quel que soit le nom sous Windows 8).

11
akluth

Vous pouvez intégrer le fichier et utiliser la réflexion pour l’obtenir.

Steam s = Assembly.GetExecutingAssembly().GetManifestResourceStream("file name");
XmlDocument d = new XmlDocument();
steamReader r = new StreamReader(s);
d.LoadXml(r.ReadToEnd());
r.Close();

Consultez cet article. Il montre comment intégrer et obtenir un fichier à l'aide de la réflexion: http://support.Microsoft.com/kb/319292

0
Flavia