replace - Replacing a line in a file "in place" - C# -


संभव डुप्लिकेट:

मुझे एक बहुत बड़ी फाइल में एक पंक्ति को बदलने की जरूरत है, इसलिए मुझे पढ़ने के लिए सभी को नहीं पढ़ना और सभी को लिखना - सभी मैं प्रतिस्थापन की जगह, प्रतिस्थापित करना, फ़ाइल को बंद करना चाहता हूं।

वास्तव में, आप 'दो विकल्प हैं, सबसे पहले कुछ गंभीर प्रतिबंध हैं, दूसरा सरलतम और संभवत: वह है जिसे आप चाहते हैं।

  1. पढ़ें लिखने की सुविधा के लिए फ़ाइल खोलें, लाइन द्वारा फ़ाइल लाइन को पढ़ें, याद रखना वर्तमान पंक्ति की स्थिति जिसे आपने अभी पढ़ा है (StreamReader.BaseStream.pos)। यदि यह को बदलने की रेखा है और नई लाइन बिल्कुल पुरानी है तो , लाइन की शुरुआत में वापस लौटें और लिखें।
  2. फ़ाइल खोलें, पढ़ें प्रत्येक पंक्ति, नई फ़ाइल में लिखिए, प्रतिस्थापित करने वाली रेखा लिखना न दें, बल्कि इसके बजाय नई पंक्ति लिखें। तो बस पढ़ने और amp; पूरा होने तक लिखना।

दूसरा विकल्प बहुत सरल और बेहतर हो सकता है (आपको सुनिश्चित करने के लिए प्रोफाइल की आवश्यकता होगी), और यह नहीं है नई पंक्ति, वही पुरानी प्रतिबंध के समान है।

विकल्प के साथ जाएं

पीएस ReadAll WriteAll फ़ंक्शन का उपयोग करने की आदत से बाहर निकलना, वे असली दुनिया के अनुप्रयोगों के लिए अच्छा नहीं हैं "लाइन पढ़ें, एक पंक्ति की प्रक्रिया" मुहावरें 100k और 100TB की फ़ाइलों पर समान रूप से अच्छी तरह से काम करेगी। । । 100 टीबी फ़ाइल स्पष्ट रूप से थोड़ी देर लम्बी होगी:) <पी / पी> पी 1 पी जबकि विकल्प 1 सीधे आगे बढ़ता है, सही ढंग से लागू करने में वास्तव में आश्चर्य की बात है, 100 छोटी छोटी चीजें हैं जो गलत हो सकती हैं। वेरिएबल बाइट आकार, विभिन्न एन्कोडिंग इत्यादि विकल्प 2 उतना सरल है जितना लगता है।


Comments