C# में फ़ाइल सिस्टम के साथ कार्य: सिद्धांत से व्यवहार तक
फ़ाइल सिस्टम के साथ कार्य करना एक बुनियादी कार्य है जिसका सामना हर डेवलपर करता है। चाहे वह लॉगिंग हो, कॉन्फ़िगरेशन फ़ाइलों का प्रसंस्करण हो, डेटा आयात करना हो या रिपोर्ट बनाना हो - C# (.NET) में फ़ाइलों को सही ढंग से पढ़ना, लिखना और प्रबंधित करने की क्षमता किसी भी प्रोजेक्ट में आवश्यक है। इस लेख में, हम फ़ाइल सिस्टम के साथ काम करने के व्यावहारिक उदाहरणों पर चर्चा करेंगे, सरल संचालन से शुरू करके निर्देशिकाओं के प्रसंस्करण तक।
हम System.IO नेमस्पेस का उपयोग करेंगे, जो फ़ाइल सिस्टम के साथ बातचीत के लिए सभी आवश्यक क्लास प्रदान करता है।
1. फ़ाइलों और फ़ोल्डरों के साथ काम करने के लिए मुख्य क्लास
कोड लिखने से पहले, प्रमुख क्लास से परिचित होना महत्वपूर्ण है:
- File - फ़ाइलों को बनाने, कॉपी करने, हटाने और स्थानांतरित करने के लिए स्थैतिक क्लास।
- FileInfo - इंस्टेंस क्लास जो किसी विशिष्ट फ़ाइल के बारे में जानकारी और उसके साथ काम करने के तरीके प्रदान करता है।
- Directory - फ़ोल्डरों के साथ काम करने के लिए स्थैतिक क्लास।
- DirectoryInfo - फ़ोल्डर के बारे में जानकारी प्राप्त करने के लिए इंस्टेंस क्लास।
- Path - फ़ाइल पथों के साथ काम करने के लिए उपयोगिता क्लास।
आइए एक सरल उदाहरण देखें - फ़ाइल के अस्तित्व की जाँच करना और उसे बनाना:
using System;using System.IO;
class Program{ static void Main() { string filePath = @"C:\\Test\\example.txt";
if (File.Exists(filePath)) { Console.WriteLine("फ़ाइल मौजूद है।"); } else { File.Create(filePath).Close(); Console.WriteLine("फ़ाइल बनाई गई।"); } }}ध्यान दें: File.Create() के बाद हम स्ट्रीम को मुक्त करने के लिए Close() कॉल करते हैं। आधुनिक प्रोजेक्ट्स में using कंस्ट्रक्शन का उपयोग करना बेहतर है।
2. टेक्स्ट फ़ाइलों को पढ़ना और लिखना
सबसे सामान्य परिदृश्य टेक्स्ट जानकारी को पढ़ना और लिखना है। C# में इसके लिए सुविधाजनक क्लास StreamReader और StreamWriter हैं।
2.1 फ़ाइल में डेटा लिखना
StreamWriter का उपयोग करके फ़ाइल में स्ट्रिंग लिखने का उदाहरण:
string path = @"C:\\Test\\log.txt";string[] lines = { "पहली पंक्ति", "दूसरी पंक्ति", "तीसरी पंक्ति" };
using (StreamWriter writer = new StreamWriter(path, false)){ foreach (string line in lines) { writer.WriteLine(line); }}Console.WriteLine("डेटा लिखा गया।");StreamWriter कंस्ट्रक्टर का दूसरा पैरामीटर false फ़ाइल को ओवरराइट करने का संकेत देता है। यदि true निर्दिष्ट किया जाता है, तो डेटा अंत में जोड़ा जाएगा।
2.2 फ़ाइल से डेटा पढ़ना
पूरी सामग्री या पंक्ति दर पंक्ति पढ़ना:
string path = @"C:\\Test\\log.txt";
// एक स्ट्रिंग में पूरा टेक्स्ट पढ़नाstring allText = File.ReadAllText(path);Console.WriteLine("पूरा टेक्स्ट:" + allText);
// पंक्ति दर पंक्ति पढ़नाstring[] allLines = File.ReadAllLines(path);Console.WriteLine("पंक्ति दर पंक्ति:");foreach (string line in allLines){ Console.WriteLine(line);}बड़ी फ़ाइलों के लिए, पूरी फ़ाइल को मेमोरी में लोड करने से बचने के लिए लूप में पंक्ति दर पंक्ति पढ़ने के लिए StreamReader का उपयोग करना बेहतर है।
using (StreamReader reader = new StreamReader(path)){ string currentLine; while ((currentLine = reader.ReadLine()) != null) { Console.WriteLine(currentLine); }}3. बाइनरी फ़ाइलों के साथ कार्य (FileStream)
जब बाइनरी डेटा (चित्र, आर्काइव, सीरियलाइज़्ड ऑब्जेक्ट) के साथ काम करने की आवश्यकता होती है, तो FileStream क्लास का उपयोग किया जाता है। यह बाइट्स के रूप में डेटा को पढ़ने और लिखने की अनुमति देता है।
बाइट ऐरे लिखने और पढ़ने का उदाहरण: