C# और फ़ाइलें: फ़ाइल सिस्टम के साथ काम करने में शुरुआत से विशेषज्ञ तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में फ़ाइलों के साथ काम करने की क्षमता एक सुपरपावर क्यों है?

\n\n

कल्पना करें कि आप एक प्रोग्राम लिख रहे हैं जिसे उपयोगकर्ता सेटिंग्स को सहेजना, त्रुटियों को लॉग करना या हज़ारों दस्तावेज़ों को प्रोसेस करना है। फ़ाइल सिस्टम कौशल के बिना, आप एक दीवार से टकरा जाएंगे। C# में फ़ाइलों के साथ काम करना केवल उबाऊ पंक्तियाँ पढ़ना नहीं है। यह शक्तिशाली उपयोगिताएँ, पार्सर और यहाँ तक कि मिनी-डेटाबेस बनाने का अवसर है।

\n\n

इस लेख में, हम सब कुछ कवर करेंगे: सामान्य File.ReadAllText से लेकर स्ट्रीम और फ़ोल्डर्स के साथ उन्नत कार्य तक। आप सीखेंगे कि डेटा कैसे न खोएं, बड़ी फ़ाइलों को पढ़ने को कैसे अनुकूलित करें, और फ़ाइल सिस्टम के 'नुकसानों' से कैसे बचें। चलिए शुरू करते हैं!

\n\n

हीरो क्लासेस: File, FileInfo, Directory और Path

\n\n

.NET में फ़ाइलों के साथ काम करने के दो तरीके हैं: File क्लास की स्टैटिक विधियाँ और FileInfo क्लास की इंस्टेंस विधियाँ। पहला त्वरित 'पढ़ा-लिखा' संचालन के लिए है, दूसरा तब जब आपको एक फ़ाइल के साथ लंबे समय तक और स्थिति बनाए रखते हुए काम करना हो।

\n\n

File बनाम FileInfo: कब क्या उपयोग करें?

\n\n

File एक स्टैटिक क्लास है। आप File.Exists("test.txt") लिखते हैं और हो जाता है। सुविधाजनक, लेकिन प्रत्येक ऑपरेशन पर सिस्टम पथ को फिर से जाँचता है।

\n\n

FileInfo - आप एक बार ऑब्जेक्ट बनाते हैं, फिर विधियों को कॉल करते हैं। यदि आप एक फ़ाइल के साथ कई क्रियाएँ कर रहे हैं तो यह तेज़ है।

\n\n
// त्वरित तरीका\nif (File.Exists(@"C:\\data\\log.txt"))\n{\n    string content = File.ReadAllText(@"C:\\data\\log.txt");\n    Console.WriteLine(content);\n}\n\n// पेशेवर तरीका\nFileInfo fileInfo = new FileInfo(@"C:\\data\\log.txt");\nif (fileInfo.Exists)\n{\n    using (StreamReader reader = fileInfo.OpenText())\n    {\n        string content = reader.ReadToEnd();\n        Console.WriteLine(content);\n    }\n}\n
\n\n

Directory क्लास उसी सिद्धांत पर काम करता है - फ़ोल्डर्स के साथ त्वरित संचालन के लिए स्टैटिक विधियाँ। Path पथों को जोड़ने के लिए एक अपरिहार्य सहायक है: Path.Combine("folder", "file.txt") स्वचालित रूप से सही स्लैश लगाता है।

\n\n

फ़ाइलें पढ़ना: छोटे से लेकर विशाल तक

\n\n

C# में फ़ाइलें पढ़ना सरलता और प्रदर्शन के बीच संतुलन की कला है। आइए तीन स्तरों को समझते हैं।

\n\n

स्तर 1: सब कुछ एक साथ (छोटी फ़ाइलों के लिए)

\n\n

यदि फ़ाइल 10 MB तक है, तो बेझिझक ReadAllText या ReadAllLines का उपयोग करें।

\n\n
string text = File.ReadAllText("config.json");\nstring[] lines = File.ReadAllLines("users.csv");\n
\n\n

नुकसान: बड़ी फ़ाइल के साथ, आपको OutOfMemoryException मिलने का जोखिम है।

\n\n

स्तर 2: पंक्ति दर पंक्ति पढ़ना (मध्यम फ़ाइलों के लिए)

\n\n

StreamReader का उपयोग करें - एक-एक पंक्ति पढ़ें, सब कुछ मेमोरी में लोड किए बिना।

\n\n
using (StreamReader reader = new StreamReader("big_log.txt"))\n{\n    string line;\n    while ((line = reader.ReadLine()) != null)\n    {\n        Console.WriteLine(line); // प्रत्येक पंक्ति को प्रोसेस करें\n    }\n}\n
\n\n

using पर ध्यान दें - यह सुनिश्चित करता है कि त्रुटि होने पर भी फ़ाइल बंद हो जाए।

\n\n

स्तर 3: बाइनरी डेटा पढ़ना (प्रोफेशनल के लिए)

\n\n

इमेज, आर्काइव या किसी भी गैर-टेक्स्ट फ़ाइल के साथ काम करने के लिए FileStream की आवश्यकता होती है।

\n\n
using (FileStream fs = new FileStream("photo.jpg", FileMode.Open, FileAccess.Read))\n{\n    byte[] buffer = new byte[1024];\n    int bytesRead;\n    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)\n    {\n        // डेटा के टुकड़े को प्रोसेस करें\n        Console.WriteLine($"प्रोसेस किए गए {bytesRead} बाइट");\n    }\n}\n
\n\n

फ़ाइलें लिखना: डेटा कैसे न खोएं

\n\n

C# में लिखना केवल File.WriteAllText नहीं है। मोड को समझना महत्वपूर्ण है: नई फ़ाइल बनाना, अंत में जोड़ना या ओवरराइट करना।

\n\n

FileMode के मुख्य मोड

\n
    \n
  • CreateNew - एक नई फ़ाइल बनाता है; यदि फ़ाइल पहले से मौजूद है तो अपवाद फेंकता है।
  • \n
  • Create - एक नई फ़ाइल बनाता है; यदि मौजूद है तो ओवरराइट करता है।
  • \n
  • Open - मौजूदा फ़ाइल खोलता है; यदि मौजूद नहीं है तो अपवाद फेंकता है।
  • \n
  • OpenOrCreate - फ़ाइल खोलता है या यदि मौजूद नहीं है तो बनाता है।
  • \n
  • Append - फ़ाइल खोलता है और अंत में जोड़ता है; यदि मौजूद नहीं है तो बनाता है।
  • \n
\n\n

उदाहरण: लॉग फ़ाइल में लिखना

\n\n
using (StreamWriter writer = new StreamWriter("app.log", append: true))\n{\n    writer.WriteLine($"{DateTime.Now}: एप्लिकेशन शुरू हुआ");\n}\n
\n\n

append: true पैरामीटर FileMode.Append के बराबर है। यदि आप false सेट करते हैं, तो फ़ाइल ओवरराइट हो जाएगी।

\n\n

फ़ाइलों और फ़ोल्डर्स का प्रबंधन

\n\n

फ़ाइलों को स्थानांतरित करना, कॉपी करना और हटाना दैनिक कार्य हैं। यहाँ मुख्य विधियाँ हैं:

\n\n
// फ़ाइल कॉपी करना\nFile.Copy("source.txt", "destination.txt", overwrite: true);\n\n// फ़ाइल स्थानांतरित करना\nFile.Move("old.txt", "new.txt");\n\n// फ़ाइल हटाना\nFile.Delete("temp.txt");\n\n// फ़ोल्डर बनाना\nDirectory.CreateDirectory(@"C:\\MyApp\\Data");\n\n// फ़ोल्डर हटाना (सभी सामग्री सहित)\nDirectory.Delete(@"C:\\Temp", recursive: true);\n
\n\n

महत्वपूर्ण: Delete विधि फ़ाइलों को रीसायकल बिन में नहीं भेजती, बल्कि उन्हें स्थायी रूप से हटा देती है। सावधान रहें!

\n\n

सामान्य गलतियाँ और उनसे कैसे बचें

\n\n
    \n
  1. फ़ाइल बंद करना भूलना - हमेशा using का उपयोग करें या Dispose() को मैन्युअल रूप से कॉल करें।
  2. \n
  3. एन्कोडिंग को अनदेखा करना - टेक्स्ट फ़ाइलें पढ़ते समय Encoding.UTF8 निर्दिष्ट करें।
  4. \n
  5. पथों की जाँच न करना - फ़ाइल या फ़ोल्डर के साथ काम करने से पहले हमेशा File.Exists या Directory.Exists का उपयोग करें।
  6. \n
  7. अपवादों को अनदेखा करना - try-catch ब्लॉक में फ़ाइल संचालन लपेटें, विशेष रूप से UnauthorizedAccessException और IOException को पकड़ें।
  8. \n
\n\n

निष्कर्ष: अब आप फ़ाइल गुरु हैं!

\n\n

हमने C# में फ़ाइलों के साथ काम करने के सभी पहलुओं को कवर किया है: सरल पढ़ने और लिखने से लेकर बाइनरी डेटा और फ़ोल्डर प्रबंधन तक। अब आप जानते हैं कि कब File और कब FileInfo का उपयोग करना है, बड़ी फ़ाइलों को कैसे संभालना है और सामान्य गलतियों से कैसे बचना है।

\n\n

अपने प्रोजेक्ट्स में इन तकनीकों का अभ्यास करें, और जल्द ही फ़ाइल सिस्टम के साथ काम करना आपके लिए दूसरी प्रकृति बन जाएगा। हैप्पी कोडिंग!

ब्लॉग

पुस्तक अनुशंसाएँ