136 votes

Ouvrir un fichier avec Notepad en C#

Comment ouvrir un fichier en c# ? Je ne veux pas dire le lire avec textreader et readline(). Je veux dire l'ouvrir comme un fichier indépendant dans le bloc-notes.

0 votes

Vous voulez lancer une instance du bloc-notes à partir de votre programme et lui faire ouvrir un fichier spécifique ?

1 votes

Note : Lorsque j'ai essayé avec .Net 2.0, Process.Start n'a pas automatiquement développé "%windir%", bien que l'omettre comme dans La réponse de viabhav ou l'étendre explicitement ( Environment.GetEnvironmentVariable("windir") ) a fonctionné avec succès.

0 votes

Vous pouvez intégrer un clone du bloc-notes dans votre application et le personnaliser pour qu'il fonctionne exactement comme vous le souhaitez. J'ai écrit un clone de notepad en C#, vous pouvez le trouver ici : simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html

223voto

Aren Points 17843

Vous devez System.Diagnostics.Process.Start() .

L'exemple le plus simple :

Process.Start("notepad.exe", fileName);

Approche plus générique :

Process.Start(fileName);

La deuxième approche est probablement la meilleure, car le shell Windows ouvrira votre fichier avec l'éditeur associé. De plus, si le fichier spécifié n'a pas d'association, il utilisera l'attribut Open With... de Windows.

Note à ceux qui sont dans les commentaires, merci pour votre contribution. Ma réponse "quick n' dirty" était légèrement erronée, j'ai mis à jour la réponse pour refléter la manière correcte.

1 votes

Je m'échapperais si j'étais vous.

1 votes

Je suis d'accord que c'est une façon de faire, une autre façon si vous voulez ouvrir le document mais pas exécuter le programme serait d'utiliser quelque chose du genre : richTextBox1.LoadFile(Program.editInC,RichTextBoxStreamType.UnicodePlainText) pour charger le contenu réel dans un fichier.

1 votes

Il est préférable de passer le nom du fichier comme deuxième paramètre. En fait, selon le documentation votre code ne devrait pas fonctionner, car le paramètre unique de l'option Process.Start est le nom du document ou du fichier de l'application, tandis que le vôtre est le nom de l'application combiné au paramètre de la ligne de commande.

32voto

TimothyP Points 6043

Vous ne fournissez pas beaucoup d'informations, mais en supposant que vous voulez ouvrir n'importe quel fichier sur votre ordinateur avec l'application qui est spécifiée pour le gestionnaire par défaut pour ce type de fichier, vous pouvez utiliser quelque chose comme ça :

var fileToOpen = "SomeFilePathHere";
var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
    UseShellExecute = true,
    FileName = fileToOpen
};

process.Start();
process.WaitForExit();

Le paramètre UseShellExecute indique à Windows d'utiliser le programme par défaut pour le type de fichier que vous ouvrez.

Le WaitForExit fera en sorte que votre application attende que l'application que vous avez luancée soit fermée.

0 votes

Et, en plus, il serait bon d'utiliser une if(File.Exists(fileToOpen)) pour éviter de rencontrer une exception.

26voto

Colin Pickard Points 23922

Cela ouvrira le fichier avec le programme Windows par défaut (le bloc-notes si vous ne l'avez pas modifié) ;

Process.Start(@"c:\myfile.txt")

16voto

vaibhav Points 2107
System.Diagnostics.Process.Start( "notepad.exe", "text.txt");

13voto

Oded Points 271275

Vous pouvez utiliser Process.Start en appelant notepad.exe avec le fichier comme paramètre.

 Process.Start(@"notepad.exe", pathToFile);

2 votes

Au fait, les %pathVariables% ne fonctionnent pas avec cette méthode. Process.Start(@"%windir%\notepad.exe"); jette une Win32Exception : "Cannot find file" mais normalement cela devrait fonctionner.

0 votes

@Aren : ce qui peut être résolu en appelant Environment.ExpandEnvironmentVariables()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X