2008-12-03 12 views
7
के बाद

यह संभव इस तरह के निर्माण में ReadToEnd विधि बुला के बाद StreamReader बंद करने के लिए किसी भी तरह है:समापन StreamReader ReadToEnd

string s = new StreamReader("filename", Encoding.UTF8).ReadToEnd(); 

एक ही अर्थ विज्ञान के साथ कोई भी विकल्प सुरुचिपूर्ण निर्माण भी स्वीकार किया जाएगा।

उत्तर

12

मुझे लगता है कि मिल जाएगा विधि तुम सच के बाद File.ReadAllText है कर रहे हैं, अगर आप सिर्फ एक फ़ाइल से पूरा पाठ पढ़ने की कोशिश कर रहे हैं सबसे कम संभव कोड।

यदि आप एन्कोडिंग निर्दिष्ट नहीं करते हैं, तो यह स्वचालित रूप से यूटीएफ -8 का उपयोग करेगा।

+0

बढ़िया! धन्यवाद! –

2

आप एक using बयान है, जो स्वचालित रूप से धारा बंद कर देता है इस्तेमाल कर सकते हैं:

string s = null;  
using (StreamReader reader = new StreamReader("filename", Encoding.UTF8) { s = reader.ReadToEnd(); } 
+0

मैं इसे इस तरह से करता हूं, लेकिन आशा करता हूं कि StreamReader चर के स्पष्ट घोषणा के बिना एक छोटा समाधान क्या है। –

+0

@ जोन-स्कीट का जवाब –

2

कोई वहाँ नहीं है लेकिन यह हमेशा वस्तुओं जो रूप IDisposable वारिस निपटाने उपयोग करने के लिए एक अच्छा अभ्यास है। आप एक पाश में ऐसा नहीं करते हैं, तो आप स्मृति लीक

string s = string.Empty; 
using(StreamReader sr = new StreamReader("filename", Encoding.UTF8)) 
{ 
    s = sr.ReadToEnd(); 
} 
+1

जाने का तरीका है बंद करने के साथ-साथ निपटान में कोई आवश्यकता या बिंदु नहीं है। इसे एक प्रयोग कथन में डालने के लिए पर्याप्त है। –

+0

मैं सहमत हूं लेकिन सभी डेवलपर्स को यह पता होना चाहिए कि महंगी वस्तुओं को बंद और निपटान किया जाना चाहिए यदि आप इसका उपयोग नहीं कर रहे हैं। – JSC

+0

नहीं, उन्हें बंद * या * डिस्पोजेड होने की आवश्यकता है। बंद करने के लिए एक कॉल जोड़ना बस अव्यवस्था जोड़ता है। इसके अलावा, अगर यह * आवश्यक * था, तो आपको इसे अंततः ब्लॉक में रखना होगा। –

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