C # 'da Not Defteri ile bir dosya açın


116

Bir dosyayı c # ile nasıl açarım? Onu textreader ve readline () ile okumayı kastetmiyorum. Not defterinde bağımsız bir dosya olarak aç demek istiyorum.


Programınızdan bir not defteri örneği başlatmak ve belirli bir dosyayı açmasını mı istiyorsunuz?
Dismissile

1
Not: .Net 2.0 ile denediğimde Process.Start, viabhav'ın cevabında olduğu gibi atlamak veya açıkça genişletmek ( Environment.GetEnvironmentVariable("windir")) başarılı bir şekilde işe yarasa da, "% windir%" 'i otomatik olarak genişletmedim .
Brian

Bir not defteri klonunu uygulamanıza entegre edebilir ve tam istediğiniz gibi çalışacak şekilde özelleştirebilirsiniz. C # 'da bir not defteri klonu yazıyorum, burada bulabilirsiniz: simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html
Luis Perez

Yanıtlar:


190

İhtiyacın var System.Diagnostics.Process.Start().

En basit örnek:

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

Daha Genel Yaklaşım:

Process.Start(fileName);

İkinci yaklaşım muhtemelen daha iyi bir uygulamadır çünkü bu, Windows Kabuğunun dosyanızı ilişkili düzenleyiciyle açmasına neden olur. Ek olarak, belirtilen dosyanın bir ilişkilendirmesi yoksa Open With..., pencerelerden iletişim kutusunu kullanır .

Yorumlarda bulunanlara dikkat edin, katkılarınız için teşekkür ederiz. Hızlı ve kirli cevabım biraz yanlıştı, cevabı doğru şekilde yansıtacak şekilde güncelledim.


1
Yerinde olsam biraz kaçardım.
Albin Sunnanbo

1
Bunun bunu yapmanın bir yolu olduğunu kabul ediyorum, belgeyi açmak istiyor ancak programı çalıştırmak istemiyorsanız başka bir yol şu satırlar boyunca bir şey kullanmak olacaktır: richTextBox1.LoadFile (Program.editInC, RichTextBoxStreamType.UnicodePlainText) gerçek içeriği bir dosyaya.
Jim

1
Dosya adını ikinci bir parametre olarak geçirmek daha iyidir. Aslında, belgelere göre , kodunuzun tek parametresi Process.Startbelge veya uygulama dosya adı olduğu için, sizinki ise komut satırı parametresi ile birleştirilmiş uygulama adı olduğu için çalışmamalıdır .
Vlad

@Albin: Teşekkürler, bunu tamamen gözden kaçırdım: p @ Jim: Sorunun bir editörün nasıl başlatılacağını sorduğuna inanıyorum. @Vlad: Teşekkürler, haklısın.
Aren

11
Kullanarak Process.Start(filename)bir saldırganın yerine olabilir ve böylece olası bir komut enjeksiyon olduğu MyTextFile.txtiçin MyMalicious.batya da fdisk .... Kullanması daha iyi Process.Start("notepad.exe", filename).
Geoff Bennett

29

Çok fazla bilgi sağlamıyorsunuz, ancak bilgisayarınızdaki herhangi bir dosyayı, o dosya türü için varsayılan işleyici için belirtilen uygulamayla açmak istediğinizi varsayarak, aşağıdaki gibi bir şey kullanabilirsiniz:

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

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

UseShellExecute parametresi, Windows'a açtığınız dosya türü için varsayılan programı kullanmasını söyler.

WaitForExit, uygulamanızın, uyguladığınız uygulama kapanana kadar beklemesine neden olacaktır.


Ayrıca, if(File.Exists(fileToOpen))bir istisnayla karşılaşmamak için a kullanmak iyi olur .
Wiccio

26

bu, dosyayı varsayılan Windows programıyla açacaktır (değiştirmediyseniz not defteri);

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

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

12

Parametre olarak dosya ile Process.Startçağırmayı kullanabilirsiniz notepad.exe.

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

2
Bu arada,% pathVariables% bu yöntemle çalışmaz. Process.Start(@"%windir%\notepad.exe");Win32Exception oluşturur: "Dosya bulunamıyor" ama normalde çalışmalıdır.
Aren

@Aren: Environment.ExpandEnvironmentVariables ()
sɐunıɔ ןɐ qɐp

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.