2010-10-29 14 views
86

Wie öffne ich eine Datei in C#? Ich meine nicht, es mit textreader und readline() zu lesen. Ich meine, öffnen Sie es als eine unabhängige Datei im Editor.Öffnen Sie eine Datei mit Editor in C#

+0

Sie möchten eine Instanz von Notepad aus Ihrem Programm starten und eine bestimmte Datei öffnen lassen? – Dismissile

+0

ja das ist, was ich will – Mohamed

+1

Hinweis: Als ich es mit .Net 2.0 versuchte, "Process.Start" nicht automatisch erweitert "% windir%", obwohl es wie in [viabhav Antwort] (http: // stackoverflow .com/questions/4055266/open-a-file-mit-notepad-in-c/4055295 # 4055295) oder erweitert es explizit ('Environment.GetEnvironmentVariable (" windir ")') funktionierte erfolgreich. – Brian

Antwort

134

Sie benötigen System.Diagnostics.Process.Start().

Das einfachste Beispiel:

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

allgemeineren Ansatz:

Process.Start(fileName); 

Der zweite Ansatz ist wahrscheinlich eine bessere Praxis, da dies den Windows-Shell führt die Dateien zu öffnen, damit Editor verknüpft ist . Wenn die angegebene Datei keine Verknüpfung hat, wird der Dialog Open With... von Windows verwendet.

Hinweis für diejenigen in den Kommentaren, danke für Ihre Eingabe. Meine schnelle n 'schmutzige Antwort war ein wenig aus, ich habe die Antwort aktualisiert, um den richtigen Weg zu reflektieren.

+1

Ich würde etwas entkommen, wenn ich du wäre. –

+1

Ich stimme zu, dass dies eine Möglichkeit ist, dies zu tun, eine andere Möglichkeit, wenn Sie das Dokument öffnen möchten, aber nicht das Programm ausführen würde etwas in den folgenden Zeilen verwenden: richTextBox1.LoadFile (Program.editInC, RichTextBoxStreamType.UnicodePlainText) zum Laden der eigentliche Inhalt in eine Datei. – Jim

+1

Es ist besser, den Dateinamen als zweiten Parameter zu übergeben. Eigentlich laut der [Dokumentation] (http://msdn.microsoft.com/en-us/library/53ezey2s.aspx), sollte Ihr Code nicht funktionieren, da der einzige Parameter von 'Process.Start' der Name der Dokument- oder Anwendungsdatei ist, während Ihres der Name der Anwendung ist, kombiniert mit dem Kommandozeilenparameter. – Vlad

24

Dies öffnet die Datei mit dem Standard-Windows-Programm (Notizblock, wenn Sie es nicht geändert haben);

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

Ich würde etwas entkommen, wenn ich du wäre. –

+0

Sie haben Recht - behoben. –

11

können Sie Process.Start verwenden, notepad.exe mit der Datei als Parameter aufrufen.

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

Newlines sind nicht sehr nützlich in Process.Start ... –

+0

@ Albin Sunnanbo - danke ... guten Fang :) – Oded

+2

Übrigens funktioniert% pathVariables% nicht mit dieser Methode. 'Process.Start (@"% windir% \ notepad.exe ");' löst eine Win32Exception aus: "Datei kann nicht gefunden werden", aber normalerweise sollte es funktionieren. – Aren

14
System.Diagnostics.Process.Start("notepad.exe", "text.txt"); 
21

Sie sind nicht viele Informationen, aber vorausgesetzt, Sie nur eine Datei auf Ihrem Computer mit der Anwendung öffnen möchten, die für diesen Dateityp für den Standard-Handler angegeben ist, Sie so etwas wie diese verwenden:

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

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

Der UseShellExecute-Parameter weist Windows an, das Standardprogramm für den Dateityp zu verwenden, den Sie öffnen.

Der WaitForExit bewirkt, dass Ihre Anwendung wartet, bis die Anwendung geschlossen wurde.

+0

Ausgezeichneter und sehr nützlicher Code für mich, als ich versuchte, eine Notizdatei zu öffnen. – Unnikrishnan

+0

Ich habe fälschlicherweise auf "nicht nützlich" geklickt. Aber in der Tat ist es sehr, sehr nützlich. – Unnikrishnan

Verwandte Themen