C # में नोटपैड के साथ एक फ़ाइल खोलें


116

मैं c # में एक फ़ाइल कैसे खोलूं? मेरा मतलब यह नहीं है कि इसे टेक्स्टरीडर और रीडलाइन () द्वारा पढ़ना। मेरा मतलब है कि इसे नोटपैड में एक स्वतंत्र फ़ाइल के रूप में खोलें।


आप अपने प्रोग्राम से नोटपैड का एक उदाहरण लॉन्च करना चाहते हैं और क्या यह एक विशिष्ट फ़ाइल खोलना है?
को

1
नोट: जब मैंने इसे .Net 2.0 के साथ आज़माया Process.Startथा , तो स्वचालित रूप से "% विंडर%" का विस्तार नहीं किया था, हालांकि इसे वैभव के उत्तर में छोड़ते हुए या इसे स्पष्ट रूप से विस्तारित करते हुए ( Environment.GetEnvironmentVariable("windir")) सफलतापूर्वक काम किया।
ब्रायन

आप अपने आवेदन में एक नोटपैड क्लोन को एकीकृत कर सकते हैं और इसे अपने इच्छित तरीके से कार्य करने के लिए अनुकूलित कर सकते हैं। मैं सी # में एक नोटपैड क्लोन लिखता हूं: आप इसे यहां पा सकते हैं: Simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html
लुइस पेरेज़

जवाबों:


190

आपको जरूरत है System.Diagnostics.Process.Start()

सबसे सरल उदाहरण:

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

अधिक सामान्य दृष्टिकोण:

Process.Start(fileName);

दूसरा दृष्टिकोण शायद एक बेहतर अभ्यास है क्योंकि यह विंडोज़ शेल को आपकी फ़ाइल को खोलने के लिए प्रेरित संपादक के साथ करेगा। इसके अतिरिक्त, यदि निर्दिष्ट फ़ाइल में एसोसिएशन नहीं है, तो यह Open With...विंडोज़ से संवाद का उपयोग करेगा ।

टिप्पणी में उन लोगों पर ध्यान दें, आपके इनपुट के लिए धन्यवाद। मेरा त्वरित n 'गंदा उत्तर थोड़ा बंद था, मैंने सही तरीके को प्रतिबिंबित करने के लिए उत्तर अपडेट किया है।


1
मैं कुछ बच जाता अगर मैं तुम होते।
एल्बिन सुन्नान्बो

1
मैं मानता हूं कि यह ऐसा करने का एक तरीका है, एक और तरीका यदि आप दस्तावेज़ खोलना चाहते थे, लेकिन कार्यक्रम नहीं चलाना चाहते हैं तो इसके साथ कुछ का उपयोग करना होगा: richTextBox1.LoadFile (Program.editInC, RichTextStreamType.UnicodePlainText) को लोड करने के लिए एक फ़ाइल में वास्तविक सामग्री।
जिम

1
फ़ाइल नाम को दूसरे पैरामीटर के रूप में पास करना बेहतर है। वास्तव में, दस्तावेज़ के अनुसार , आपका कोड काम नहीं करना चाहिए, क्योंकि Process.Startदस्तावेज़ या एप्लिकेशन फ़ाइल नाम का एकल पैरामीटर है, जबकि आपका एप्लिकेशन कमांड लाइन पैरामीटर के साथ संयुक्त नाम है।
व्लाद

@ एलेन: धन्यवाद, पूरी तरह से अनदेखी की गई कि एक: पी @ जिम: मेरा मानना ​​है कि सवाल यह पूछ रहा था कि संपादक को कैसे लॉन्च किया जाए। @ व्लाद: धन्यवाद, आप सही हैं।
०३:३० पर

11
का उपयोग करना Process.Start(filename)एक संभावित कमांड इंजेक्शन है, जिससे एक हमलावर या के MyTextFile.txtलिए स्थानापन्न हो सकता है । उपयोग करने के लिए बेहतर है । MyMalicious.batfdisk ...Process.Start("notepad.exe", filename)
ज्योफ बेनेट

29

आप बहुत सी जानकारी प्रदान नहीं कर रहे हैं, लेकिन यह मानकर कि आप उस फ़ाइल के लिए डिफ़ॉल्ट हैंडलर के लिए निर्दिष्ट एप्लिकेशन के साथ अपने कंप्यूटर पर बस कोई फ़ाइल खोलना चाहते हैं, आप कुछ इस तरह का उपयोग कर सकते हैं:

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

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

UseShellExecute पैरामीटर विंडोज को उस प्रोग्राम के प्रकार के लिए डिफ़ॉल्ट प्रोग्राम का उपयोग करने के लिए कहता है जिसे आप खोल रहे हैं।

WaitForExit आपके एप्लिकेशन को तब तक प्रतीक्षा करने का कारण बनेगा जब तक कि आपके द्वारा बंद किया गया एप्लिकेशन बंद नहीं हो जाता।


और, इसके अलावा, if(File.Exists(fileToOpen))अपवाद में चलने से बचने के लिए इसका उपयोग करना अच्छा होगा ।
विस्को

26

यह फ़ाइल को डिफ़ॉल्ट विंडोज़ प्रोग्राम के साथ खोलेगा (यदि आपने इसे नहीं बदला है तो नोटपैड);

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


12

आप एक पैरामीटर के रूप में फ़ाइल के साथ Process.Startकॉल कर उपयोग कर सकते हैं notepad.exe

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

2
वैसे,% pathVariables% इस विधि के साथ काम नहीं करते हैं। Process.Start(@"%windir%\notepad.exe");एक Win32Exception को फेंकता है: "फ़ाइल नहीं मिल सकती है" लेकिन आम तौर पर इसे काम करना चाहिए।
०३:३०

@ एरेन: जिसे पर्यावरण कॉलिंग से हल किया जा सकता है।
ExpandEnvironmentVariables

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.