Buka file dengan Notepad di C #

116

Bagaimana saya membuka file di c #? Saya tidak bermaksud membacanya dengan textreader dan readline (). Maksud saya membukanya sebagai file independen di notepad.

Mohamed
sumber
Anda ingin meluncurkan notepad dari program Anda dan membuka file tertentu?
Hentikan tanggal
1
Catatan: Ketika saya mencobanya dengan .Net 2.0, Process.Starttidak secara otomatis mengembangkan "% windir%", meskipun menghilangkannya seperti dalam jawaban viabhav atau mengembangkannya secara eksplisit ( Environment.GetEnvironmentVariable("windir")) berhasil dengan sukses.
Brian
Anda dapat mengintegrasikan klon notepad ke dalam aplikasi Anda dan menyesuaikannya agar berfungsi seperti yang Anda inginkan. Saya menulis klon notepad di C # Anda dapat menemukannya di sini: simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html
Luis Perez

Jawaban:

190

Anda membutuhkan System.Diagnostics.Process.Start().

Contoh paling sederhana:

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

Lebih Banyak Pendekatan Generik:

Process.Start(fileName);

Pendekatan kedua mungkin merupakan praktik yang lebih baik karena ini akan menyebabkan windows Shell membuka file Anda dengan editor yang terkait. Selain itu, jika file yang ditentukan tidak memiliki asosiasi, itu akan menggunakan Open With...dialog dari windows.

Catatan untuk yang ada di komentar, terima kasih atas masukannya. Jawaban cepat dan jorok saya sedikit salah, saya telah memperbarui jawaban untuk mencerminkan cara yang benar.

Aren
sumber
1
Aku akan melarikan diri jika aku jadi kamu.
Albin Sunnanbo
1
Saya setuju bahwa ini adalah salah satu cara untuk melakukan ini, cara lain jika Anda ingin membuka dokumen tetapi tidak menjalankan program akan menggunakan sesuatu di sepanjang baris: richTextBox1.LoadFile (Program.editInC, RichTextBoxStreamType.UnicodePlainText) untuk memuat konten aktual ke dalam file.
Jim
1
Lebih baik melewatkan nama file sebagai parameter kedua. Sebenarnya, menurut dokumentasi , kode Anda seharusnya tidak berfungsi, karena parameter tunggal Process.Startadalah dokumen atau nama file aplikasi, sedangkan milik Anda adalah nama aplikasi yang digabungkan dengan parameter baris perintah.
Vlad
@Albin: Terima kasih, yang itu benar-benar terlewatkan: p @Jim: Saya yakin pertanyaannya adalah menanyakan bagaimana cara meluncurkan editor. @Vlad: Terima kasih, Anda benar.
Aren
11
Menggunakan Process.Start(filename)merupakan suntikan perintah potensial, dimana penyerang bisa menggantikan MyTextFile.txtuntuk MyMalicious.batatau fdisk .... Lebih baik digunakan Process.Start("notepad.exe", filename).
Geoff Bennett
29

Anda tidak memberikan banyak informasi, tetapi dengan asumsi Anda ingin membuka sembarang file di komputer Anda dengan aplikasi yang ditentukan untuk penangan default untuk jenis file tersebut, Anda dapat menggunakan sesuatu seperti ini:

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

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

Parameter UseShellExecute memberi tahu Windows untuk menggunakan program default untuk jenis file yang Anda buka.

WaitForExit akan menyebabkan aplikasi Anda menunggu hingga aplikasi yang Anda luaning ditutup.

TimothyP
sumber
Dan, sebagai tambahan, alangkah baiknya menggunakan a if(File.Exists(fileToOpen))untuk menghindari terjadinya pengecualian.
Wiccio
26

ini akan membuka file dengan program windows default (notepad jika Anda belum mengubahnya);

Process.Start(@"c:\myfile.txt")
Colin Pickard
sumber
15
System.Diagnostics.Process.Start( "notepad.exe", "text.txt");
Vaibhav
sumber
12

Anda dapat menggunakan Process.Start, memanggil notepad.exedengan file sebagai parameter.

 Process.Start(@"notepad.exe", pathToFile);
Oded
sumber
2
Omong-omong,% pathVariables% tidak bekerja dengan metode ini. Process.Start(@"%windir%\notepad.exe");melempar Win32Exception: "Tidak dapat menemukan file" tetapi biasanya itu harus bekerja.
Aren
@Aren: yang dapat diselesaikan dengan memanggil Environment.ExpandEnvironmentVariables ()
sɐunıɔ ןɐ qɐp