ऐसा करने में कोई समस्या है?
int i = नया StreamReader ("file.txt "।) .टित (एंड्रॉइड)। स्प्लिट (नया चार [] {'\ n'})। लंबाई
आपके द्वारा पोस्ट की गई विधि विशेष रूप से अच्छी नहीं है इसे अलग करें:
// नई स्ट्रीमरेडर ("file.txt")। ReadToEnd ()। स्प्लिट (नए अक्षर [] {'\ n'})। लंबाई // यह हो जाता है : Var फ़ाइल = नया स्ट्रीमरिडर ("file.txt")। ReadToEnd (); // बड़ा स्ट्रिंग var लाइन = फाइल। स्प्लिट (नया चार [] {'\ n'}); // बड़ा सरणी var count = lines.Qount;
आप वास्तव में इस फ़ाइल को दो बार स्मृति में रख रहे हैं: एक बार सभी पंक्तियों को पढ़ने के लिए, एक बार इसे सरणी में विभाजित करने के लिए। कचरा कलेक्टर उस से नफरत करता है।
यदि आप एक लाइनर पसंद करते हैं, तो आप System.IO.File.ReadAllLines (filePath) लिख सकते हैं। Length
, लेकिन यह अभी भी पूरी फाइल को पुनर्प्राप्त करता है एक सरणी। ऐसा कोई मतलब नहीं है कि यदि आप सरणी पर नहीं जा रहे हैं।
एक तेज़ समाधान होगा:
int totallines (स्ट्रिंग फ़ाइलपैथ) {using (StreamReader आर = नया स्ट्रीमरिडर (फ़ाइलपथ)) {int i = 0; जबकि (r.ReadLine ()! = नल) {i ++; } वापसी आई; }}
ऊपर दिए गए कोड किसी भी समय स्मृति में पाठ की एक पंक्ति (अधिकतम) रखता है। यह तब तक कुशल होने जा रहा है जब तक लाइन अपेक्षाकृत कम हो।
Comments
Post a Comment