2010-10-29 2 views
86

Как открыть файл в C#? Я не хочу читать его с помощью textreader и readline(). Я имею в виду открыть его как независимый файл в блокноте.Открыть файл с помощью Блокнота в C#

+0

Вы хотите запустить экземпляр блокнота из своей программы и открыть ли он конкретный файл? – Dismissile

+0

да, это то, что я хочу – Mohamed

+1

Примечание: Когда я попытался с .Net 2.0, 'Process.Start' не автоматически расширил«% windir% », хотя и опустил его, как в [viabhav's answer] (http: // stackoverflow .com/questions/4055266/open-a-file-with-notepad-in-c/4055295 # 4055295) или его расширение явно («Environment.GetEnvironmentVariable (« windir »)) успешно работало. – Brian

ответ

134

Необходимо System.Diagnostics.Process.Start().

Самый простой пример:

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

более общий подход:

Process.Start(fileName); 

Второй подход, вероятно, лучшая практика, поскольку это приведет к оболочке Windows, чтобы открыть файл с ним ассоциируется редактор , Кроме того, если указанный файл не имеет ассоциации, он будет использовать диалог Open With... из окон.

Примечание для комментариев, благодарю вас за ваш вклад. Мой быстрый «грязный ответ» был слегка отключен, я обновил ответ, чтобы отразить правильный путь.

+1

Я бы сбежал, если бы был вами. –

+1

Я согласен с тем, что это один из способов сделать это, другим способом, если вы хотите открыть документ, но не запускать программу, было бы использовать что-то по строкам: richTextBox1.LoadFile (Program.editInC, RichTextBoxStreamType.UnicodePlainText) для загрузки фактическое содержимое в файл. – Jim

+1

Лучше передать имя файла в качестве второго параметра. Собственно, в соответствии с [документацией] (http://msdn.microsoft.com/en-us/library/53ezey2s.aspx), ваш код не должен работать, поскольку единственным параметром «Process.Start» является имя документа или файла приложения, тогда как ваше имя приложения совпадает с параметром командной строки. – Vlad

24

это откроет файл с программой окон по умолчанию (блокнот, если вы его не изменили);

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

Я бы сбежал, если бы был вами. –

+0

вы правы - исправлены. –

11

Вы можете использовать Process.Start, вызывая notepad.exe с файлом в качестве параметра.

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

Новые строки не очень полезны в Process.Start ... –

+0

@Albin Sunnanbo - спасибо ... good catch :) – Oded

+2

Кстати,% pathVariables% не работают с этим методом. 'Process.Start (@"% windir% \ notepad.exe ");' бросает Win32Exception: «Не удается найти файл», но обычно он должен работать. – Aren

21

Вы не предоставляют много информации, , но если вы хотите открыть только любой файл на вашем компьютере с приложением, указанным для обработчика по умолчанию для этого типа файла, вы можете использовать что-то вроде этого:

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

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

Параметр UseShellExecute сообщает Windows использовать программу по умолчанию для типа файла, который вы открываете.

WaitForExit заставит ваше приложение ждать, пока приложение, которое вы luanched, не было закрыто.

+0

Отличный и очень полезный код для меня, когда я пытался открыть файл заметки. – Unnikrishnan

+0

Я ошибочно нажал на «не полезно». Но на самом деле это очень полезно. – Unnikrishnan

Смежные вопросы