2015-04-02 7 views
16

के लिए डिफ़ॉल्ट बफर आकार है, MSDN कहतेक्या <code>public StreamWriter(Stream stream)</code> निर्माता के लिए StreamWriter

UTF-8 एन्कोडिंग और डिफ़ॉल्ट बफ़र आकार का उपयोग करके निर्दिष्ट स्ट्रीम के लिए StreamWriter वर्ग का एक नया उदाहरण आरंभीकृत।

मैं अन्य कन्स्ट्रक्टर अधिभारों में से एक का उपयोग करना चाहता हूं लेकिन डिफ़ॉल्ट बफर आकार का उपयोग करना चाहता हूं। डिफ़ॉल्ट बफर आकार क्या है? एमएसडीएन कहीं भी नहीं कहता है। Rubens Farias' उत्तर here कहता है कि यह "4 कीबी" है (जो भी इसका मतलब है ... केबी मुझे लगता है?) लेकिन इसे साबित करने के लिए कोई लिंक नहीं है।

+0

[यह पोस्ट] (http://stackoverflow.com/questions/5670873/streamwriter-automatically-flushing-buffer-when-given-large-messages) बताता है कि डिफ़ॉल्ट बफर आकार 1024 बाइट्स है। – dotNET

+0

आह जब दस्तावेज़ विफल रहता है, तो decompile। मैं हमेशा भूल जाता हूँ! धन्यवाद :) –

+1

[यहां यह है] (http://referencesource.microsoft.com/#mscorlib/system/io/streamwriter.cs,62bd8ad495f57b21,references) –

उत्तर

27

आह जब दस्तावेज़ विफल हो जाता है, तो decompile। मैं हमेशा भूल जाता हूँ!

अच्छा, ऐसा मत करो। अब यह आवश्यक नहीं है, आप माइक्रोसॉफ्ट प्रोग्रामर द्वारा लिखे गए वास्तविक स्रोत कोड को देख सकते हैं। डीकंपील्ड कोड से हमेशा बेहतर, इसमें टिप्पणियां हैं।

Reference Source वेबसाइट पर जाएं। यह एक मोटा साल पहले अपडेट किया गया था, अब यह एक बहुत ही जटिल ब्राउज़र इंटरफ़ेस है जो वास्तव में एक डिकंपेलर से तेज़ है। बस खोज बॉक्स में StreamWriter टाइप करें। आपको खोजने के लिए लगभग एक दर्जन सेकंड में ले जाता है:

// For UTF-8, the values of 1K for the default buffer size and 4K for the 
    // file stream buffer size are reasonable & give very reasonable 
    // performance for in terms of construction time for the StreamWriter and 
    // write perf. Note that for UTF-8, we end up allocating a 4K byte buffer, 
    // which means we take advantage of adaptive buffering code. 
    // The performance using UnicodeEncoding is acceptable. 
    internal const int DefaultBufferSize = 1024; // char[] 
    private const int DefaultFileStreamBufferSize = 4096; 

तो स्ट्रीमवाइटर के लिए डिफ़ॉल्ट 1024 वर्ण हैं। और यदि आप किसी स्ट्रीम के बजाय फ़ाइल में लिखते हैं तो 4096 बाइट बफर वाला फ़ाइलस्ट्रीम है, इसे बदल नहीं सकता है। यह टिप्पणियों के साथ एक क्लासिक समस्या का पर्दाफाश करता है, उनके पास बनाए रखने और कोड को मेल नहीं करने के लिए एक नाटक है। "अनुकूली बफरिंग" के बारे में नूडलिंग वास्तव में लागू नहीं किया गया है। एक कीबी 1024 पैर के साथ एक जानवर है, कभी 1000 नहीं।

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