किसी भी C# डेवलपर के लिए टेक्स्ट फाइलों को लाइन दर लाइन कुशलतापूर्वक पढ़ना एक महत्वपूर्ण कौशल है। चाहे आप लॉग प्रोसेस कर रहे हों, कॉन्फ़िगरेशन फ़ाइलों को पार्स कर रहे हों, या डेटासेट का विश्लेषण कर रहे हों, आपके द्वारा चुनी गई विधि प्रदर्शन और संसाधन उपयोग को महत्वपूर्ण रूप से प्रभावित कर सकती है। यह लेख तीन सामान्य दृष्टिकोणों का पता लगाता है, उनकी ताकत और कमजोरियों को उजागर करता है ताकि आप अपनी विशिष्ट आवश्यकताओं के लिए इष्टतम तकनीक का चयन कर सकें।
विषय सूची
File.ReadLines()
का उपयोग करनाFile.ReadAllLines()
का उपयोग करनाStreamReader.ReadLine()
का उपयोग करना- सही विधि चुनना
File.ReadLines()
का उपयोग करना
File.ReadLines()
विधि आम तौर पर सबसे कुशल और सुविधाजनक विकल्प है, खासकर बड़ी फ़ाइलों के लिए। यह एक IEnumerable
देता है, जिसका अर्थ है कि यह एक बार में पूरी सामग्री को मेमोरी में लोड किए बिना लाइन दर लाइन फ़ाइल को संसाधित करता है। यह आलसी लोडिंग विशाल डेटासेट से निपटने के दौरान संभावित OutOfMemoryException
त्रुटियों को रोकता है।
using System;
using System.IO;
using System.Linq;
public class ReadLinesExample
{
public static void Main(string[] args)
{
string filePath = "myFile.txt";
try
{
foreach (string line in File.ReadLines(filePath))
{
Console.WriteLine(line);
//यहाँ प्रत्येक लाइन को संसाधित करें
}
}
catch (FileNotFoundException)
{
Console.WriteLine($"फ़ाइल नहीं मिली: {filePath}");
}
catch (Exception ex)
{
Console.WriteLine($"एक त्रुटि हुई: {ex.Message}");
}
}
}
File.ReadAllLines()
का उपयोग करना
File.ReadAllLines()
एक सरल सिंटैक्स प्रदान करता है, जो सभी लाइनों को एक स्ट्रिंग सरणी में पढ़ता है। हालाँकि, यह दृष्टिकोण पूरी फ़ाइल को मेमोरी में लोड करता है, जिससे यह बड़ी फ़ाइलों के लिए अकुशल और संभावित रूप से समस्याग्रस्त हो जाता है। यह छोटी फ़ाइलों के लिए सबसे उपयुक्त है जहाँ मेमोरी की खपत एक प्रमुख चिंता का विषय नहीं है।
using System;
using System.IO;
public class ReadAllLinesExample
{
public static void Main(string[] args)
{
string filePath = "myFile.txt";
try
{
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
Console.WriteLine(line);
//यहाँ प्रत्येक लाइन को संसाधित करें
}
}
catch (FileNotFoundException)
{
Console.WriteLine($"फ़ाइल नहीं मिली: {filePath}");
}
catch (Exception ex)
{
Console.WriteLine($"एक त्रुटि हुई: {ex.Message}");
}
}
}
StreamReader.ReadLine()
का उपयोग करना
StreamReader.ReadLine()
सबसे सूक्ष्म नियंत्रण प्रदान करता है। आप एक लूप का उपयोग करके एक समय में एक लाइन पढ़ते हैं, अगली लाइन पढ़ने से पहले प्रत्येक लाइन के कस्टम प्रसंस्करण की अनुमति देता है। इस विधि के लिए StreamReader
के उचित निपटान को सुनिश्चित करने के लिए using
कथन का उपयोग करके स्पष्ट संसाधन प्रबंधन की आवश्यकता होती है।
using System;
using System.IO;
public class StreamReaderExample
{
public static void Main(string[] args)
{
string filePath = "myFile.txt";
try
{
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
//यहाँ प्रत्येक लाइन को संसाधित करें
}
}
}
catch (FileNotFoundException)
{
Console.WriteLine($"फ़ाइल नहीं मिली: {filePath}");
}
catch (Exception ex)
{
Console.WriteLine($"एक त्रुटि हुई: {ex.Message}");
}
}
}
सही विधि चुनना
अधिकांश परिदृश्यों के लिए, विशेष रूप से बड़ी फ़ाइलों से निपटते समय, इसकी दक्षता और उपयोग में आसानी के कारण File.ReadLines()
अनुशंसित दृष्टिकोण है। File.ReadAllLines()
केवल छोटी फ़ाइलों के लिए उपयुक्त है। StreamReader.ReadLine()
अधिक नियंत्रण प्रदान करता है लेकिन अधिक सावधानीपूर्वक संसाधन प्रबंधन की मांग करता है।
फ़ाइल नहीं मिली जैसी संभावित अपवादों को इनायत से प्रबंधित करने के लिए हमेशा मजबूत त्रुटि हैंडलिंग शामिल करें।