2013-03-30 3 views
17

से टेक्स्ट फ़ाइल पढ़ें मुझे अपने संसाधनों से एक फ़ाइल पढ़ने और उसे एक सूची में जोड़ने की आवश्यकता है। मेरी कोड:सी # संसाधन

private void Form1_Load(object sender, EventArgs e) 
{ 
    using (StreamReader r = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.myText.txt"))) 
    { 
     //The Only Options Here Are BaseStream & CurrentEncoding 
    } 
} 

Ive इस के लिए खोज की है और "Assembly.GetExecutingAssembly...." की तरह ही मिल गया है जवाब, लेकिन मेरे कार्यक्रम does not को विधानसभा का विकल्प होता है।? इस तरह

+1

क्या आपने अपने पृष्ठ के शीर्ष पर 'System.Reflection;' का उपयोग किया है? – keyboardP

+1

आपके पास क्या समस्या है? – Patrick

+0

मैंने पढ़ा है कि यह 'नया स्ट्रीम रीडर (असेंबली.गेट एक्स्प्लेटिंग एस्सेप्लर्स। गेटनामेड रिसोर्सस्ट्रीम ("[प्रोग्राम नेमस्पेस] .श्रेश ड्रेस.txt") ' – Dobz

उत्तर

29

कोशिश कुछ:

string resource_data = Properties.Resources.test; 
List<string> words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList(); 

कहाँ

enter image description here

7

आपको विधानसभा तक पहुँच प्राप्त करने के लिए अपने शीर्षक में using System.Reflection; शामिल करने के लिए की जरूरत है। यह केवल तब होता है जब आप किसी फ़ाइल को VS में "एम्बेडेड संसाधन" के रूप में चिह्नित करते हैं।

var filename = "MyFile.txt" 
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNameSpace." + filename)); 

जब तक आप 'सिस्टम का उपयोग कर रहे हैं। प्रतिबिंब;' आप इस तरह से विधानसभा पहुंच सकता है:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename); 

या यदि आप फ़ाइल नाम अलग-अलग हो की जरूरत नहीं है बस का उपयोग: बस

using(var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.m‌​yText.txt")) 
{ 
    string line; 
    while ((line = reader.ReadLine()) != null) 
    { 
     // Do some stuff here with your textfile 
    } 
} 
+1

'स्ट्रीम रीडर रीडर = नया स्ट्रीम रीडर (असेंबली.गेट एक्स्प्लेटिंगएस्प्लर()। GetManifestResourceStream ("myProg .myText.txt ")) { 'यहां केवल विकल्प हैं बेसस्ट्रीम और वर्तमान एन्कोडिंग' };' – Dobz

+0

.net का कौन सा संस्करण आप उपयोग कर रहे हैं? और आप कह रहे हैं कि पाठक के पास केवल 'पाठक.बेसस्ट्रीम' और 'पाठक' है .CurrentEncoding'? –

+0

संस्करण 4? हाँ, यह है सब कुछ आता है? – Dobz

1

:

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.MyFile.txt"); 

पूर्ण कोड इस तरह दिखना चाहिए इस पर अनुसरण करने के लिए, ऐप डेवलपर समाधान जाने का रास्ता है।

string resource_data = Properties.Resources.test; 
string [] words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries); 
foreach(string lines in words){ 
..... 
} 
0
 [TestCategory("THISISATEST")] 
     public void TestResourcesReacheability() 
     { 
      byte[] x = NAMESPACE.Properties.Resources.ExcelTestFile; 
      string fileTempLocation = Path.GetTempPath() + "temp.xls"; 
      System.IO.File.WriteAllBytes(fileTempLocation, x); 

      File.Copy(fileTempLocation, "D:\\new.xls"); 
     } 

आप एक बाइट सरणी के रूप में resouce फ़ाइल प्राप्त ताकि आप एक नई फ़ाइल बनाना WriteAllBytes उपयोग कर सकते हैं। यदि आप नहीं जानते कि आप फ़ाइल कहां लिख सकते हैं (अनुमतियों और पहुंच का कारण) आप नई फ़ाइल लिखने के लिए पीसी अस्थायी फ़ोल्डर का उपयोग करने के लिए Path.GetTempPath() का उपयोग कर सकते हैं और फिर आप वहां से कॉपी या काम कर सकते हैं।

संबंधित मुद्दे