C# Language
फ़ाइल और स्ट्रीम I / O
खोज…
परिचय
फाइलों का प्रबंधन करता है।
वाक्य - विन्यास
-
new System.IO.StreamWriter(string path)
-
new System.IO.StreamWriter(string path, bool append)
-
System.IO.StreamWriter.WriteLine(string text)
-
System.IO.StreamWriter.WriteAsync(string text)
-
System.IO.Stream.Close()
-
System.IO.File.ReadAllText(string path)
-
System.IO.File.ReadAllLines(string path)
-
System.IO.File.ReadLines(string path)
-
System.IO.File.WriteAllText(string path, string text)
-
System.IO.File.WriteAllLines(string path, IEnumerable<string> contents)
-
System.IO.File.Copy(string source, string dest)
-
System.IO.File.Create(string path)
-
System.IO.File.Delete(string path)
-
System.IO.File.Move(string source, string dest)
-
System.IO.Directory.GetFiles(string path)
पैरामीटर
पैरामीटर | विवरण |
---|---|
पथ | फ़ाइल का स्थान। |
संलग्न | यदि फ़ाइल मौजूद है, तो फ़ाइल के अंत में डेटा जोड़ देगा (संलग्न), झूठी फ़ाइल को अधिलेखित कर देगी। |
टेक्स्ट | लिखा या संग्रहीत किया जाने वाला पाठ। |
अंतर्वस्तु | लिखे जाने के लिए तार का एक संग्रह। |
स्रोत | फ़ाइल का स्थान जिसे आप उपयोग करना चाहते हैं। |
गंतव्य | जिस स्थान पर आप जाने के लिए फ़ाइल चाहते हैं। |
टिप्पणियों
- हमेशा
Stream
ऑब्जेक्ट को बंद करना सुनिश्चित करें। यह एकusing
ब्लॉक के साथ किया जा सकता है जैसा कि ऊपर दिखाया गया है या मैन्युअल रूप सेmyStream.Close()
कॉलusing
किया जा सकता है। - सुनिश्चित करें कि वर्तमान उपयोगकर्ता के पास उस पथ पर आवश्यक अनुमतियां हैं जो आप फ़ाइल बनाने के लिए प्रयास कर रहे हैं।
- वर्बेटिम स्ट्रिंग्स का उपयोग तब किया जाना चाहिए जब एक पथ स्ट्रिंग घोषित करना जिसमें बैकस्लैश शामिल हों, जैसे:
@"C:\MyFolder\MyFile.txt"
System.IO.File वर्ग का उपयोग कर एक फ़ाइल से पढ़ना
आप एक स्ट्रिंग में एक फ़ाइल की पूरी सामग्री को पढ़ने के लिए System.IO.File.ReadAllText फ़ंक्शन का उपयोग कर सकते हैं।
string text = System.IO.File.ReadAllText(@"C:\MyFolder\MyTextFile.txt");
आप System.IO.File.ReadAllLines फ़ंक्शन का उपयोग करके किसी फ़ाइल को लाइनों की एक सरणी के रूप में भी पढ़ सकते हैं:
string[] lines = System.IO.File.ReadAllLines(@"C:\MyFolder\MyTextFile.txt");
System.IO.StreamWriter वर्ग का उपयोग करके किसी फ़ाइल में लाइनें लिखना
System.IO.StreamWriter वर्ग:
किसी विशेष एन्कोडिंग में एक स्ट्रीम में वर्ण लिखने के लिए एक TextWriter लागू करता है।
WriteLine
विधि का उपयोग करके, आप किसी फ़ाइल में सामग्री लाइन-दर-पंक्ति लिख सकते हैं।
नोटिस कीवर्ड के using
जो यह सुनिश्चित करता है कि जैसे ही यह स्कोप से बाहर जाता है, स्ट्रीमराइटर ऑब्जेक्ट को डिस्पोज़ किया जाता है और इस तरह फाइल बंद हो जाती है।
string[] lines = { "My first string", "My second string", "and even a third string" };
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\MyFolder\OutputText.txt"))
{
foreach (string line in lines)
{
sw.WriteLine(line);
}
}
ध्यान दें कि StreamWriter, कंस्ट्रक्टर में एक दूसरा bool
पैरामीटर प्राप्त कर सकता है, जो फ़ाइल को अधिलेखित करने के बजाय फ़ाइल में Append
करने की अनुमति देता है:
bool appendExistingFile = true;
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\MyFolder\OutputText.txt", appendExistingFile ))
{
sw.WriteLine("This line will be appended to the existing file");
}
System.IO.File वर्ग का उपयोग करके किसी फ़ाइल में लिखना
आप किसी फ़ाइल में स्ट्रिंग लिखने के लिए System.IO.File.WriteAllText फ़ंक्शन का उपयोग कर सकते हैं।
string text = "String that will be stored in the file";
System.IO.File.WriteAllText(@"C:\MyFolder\OutputFile.txt", text);
आप System.IO.File.WriteAllLines फ़ंक्शन का उपयोग कर सकते हैं जो एक IEnumerable<String>
को दूसरे पैरामीटर के रूप में प्राप्त करता है (पिछले उदाहरण में एक स्ट्रिंग के विपरीत)। यह आपको लाइनों की एक सरणी से सामग्री लिखने देता है।
string[] lines = { "My first string", "My second string", "and even a third string" };
System.IO.File.WriteAllLines(@"C:\MyFolder\OutputFile.txt", lines);
एक IEnumerable के माध्यम से एक फ़ाइल लाइन-दर-लाइन पढ़ने वाला लेज़ीली
बड़ी फ़ाइलों के साथ काम करते समय, आप किसी फ़ाइल से IEnumerable<string>
में सभी पंक्तियों को पढ़ने के लिए System.IO.File.ReadLines
विधि का उपयोग कर सकते हैं। यह System.IO.File.ReadAllLines
समान है, सिवाय इसके कि यह एक ही बार में पूरी फाइल को मेमोरी में लोड नहीं करता है, बड़ी फ़ाइलों के साथ काम करते समय इसे अधिक कुशल बनाता है।
IEnumerable<string> AllLines = File.ReadLines("file_name.txt", Encoding.Default);
File.ReadLines का दूसरा पैरामीटर वैकल्पिक है। एन्कोडिंग निर्दिष्ट करने के लिए आवश्यक होने पर आप इसका उपयोग कर सकते हैं।
यह ध्यान रखना महत्वपूर्ण है कि ToArray
, ToList
या किसी अन्य समान फ़ंक्शन को कॉल ToArray
सभी लाइनों को एक बार में लोड करने के लिए मजबूर करेगा, जिसका अर्थ है कि ReadLines
का उपयोग करने का लाभ ReadLines
है। इस विधि का उपयोग करते हुए एक foreach
लूप या LINQ का उपयोग करके IEnumerable
पर गणना करना सबसे अच्छा है।
फ़ाइल बनाएँ
फ़ाइल स्थिर वर्ग
File
स्टैटिक क्लास की Create
मेथड का उपयोग करके हम फाइल बना सकते हैं। विधि फ़ाइल को दिए गए पथ पर बनाता है, उसी समय यह फ़ाइल को खोलता है और हमें फ़ाइल का FileStream
प्रदान करता है। सुनिश्चित करें कि आपके द्वारा किए जाने के बाद आप फ़ाइल को बंद कर दें।
EX1:
var fileStream1 = File.Create("samplePath");
/// you can write to the fileStream1
fileStream1.Close();
ex2:
using(var fileStream1 = File.Create("samplePath"))
{
/// you can write to the fileStream1
}
ex3:
File.Create("samplePath").Close();
FileStream क्लास
इस वर्ग के निर्माणकर्ता के कई अधिभार हैं जो वास्तव में यहाँ अच्छी तरह से प्रलेखित हैं । नीचे उदाहरण उस वर्ग के लिए है जो इस वर्ग की सबसे अधिक इस्तेमाल की जाने वाली कार्यक्षमता को कवर करता है।
var fileStream2 = new FileStream("samplePath", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
आप के लिए enums जांच कर सकते हैं FileMode , FileAccess , और fileshare उन लिंक्स से। वे मूल रूप से इस प्रकार हैं:
FileMode: जवाब "फ़ाइल बनाई जानी चाहिए? खोला गया? यदि मौजूद नहीं है तो खोलें?" थोड़े सवाल
FileAccess: जवाब "क्या मुझे फ़ाइल पढ़ने में सक्षम होना चाहिए, फ़ाइल को लिखना चाहिए या दोनों?" थोड़े सवाल
FileShare: उत्तर "क्या अन्य उपयोगकर्ताओं को फ़ाइल को पढ़ने, लिखने आदि में सक्षम होना चाहिए जबकि मैं इसे एक साथ उपयोग कर रहा हूं?" थोड़े सवाल
प्रतिलिपि फ़ाइल
फ़ाइल स्थिर वर्ग
इस उद्देश्य के लिए File
स्टैटिक क्लास का उपयोग आसानी से किया जा सकता है।
File.Copy(@"sourcePath\abc.txt", @"destinationPath\abc.txt");
File.Copy(@"sourcePath\abc.txt", @"destinationPath\xyz.txt");
टिप्पणी: इस पद्धति से, फ़ाइल की प्रतिलिपि बनाई जाती है, जिसका अर्थ है कि इसे स्रोत से पढ़ा जाएगा और फिर गंतव्य पथ पर लिखा जाएगा। यह एक संसाधन खपत प्रक्रिया है, यह फ़ाइल आकार के सापेक्ष समय लेगा, और यदि आप थ्रेड्स का उपयोग नहीं करते हैं, तो आपके प्रोग्राम को फ्रीज करने का कारण बन सकता है।
फ़ाइल ले जाएँ
फ़ाइल स्थिर वर्ग
इस उद्देश्य के लिए फ़ाइल स्टैटिक क्लास का उपयोग आसानी से किया जा सकता है।
File.Move(@"sourcePath\abc.txt", @"destinationPath\xyz.txt");
Remark1: केवल फ़ाइल का इंडेक्स बदलता है (यदि फ़ाइल को उसी वॉल्यूम में ले जाया जाता है)। यह ऑपरेशन फ़ाइल आकार के सापेक्ष समय नहीं लेता है।
Remark2: गंतव्य पथ पर किसी मौजूदा फ़ाइल को ओवरराइड नहीं कर सकता।
फ़ाइल को हटाएं
string path = @"c:\path\to\file.txt";
File.Delete(path);
यदि फ़ाइल मौजूद नहीं है, तो Delete
अपवाद को नहीं फेंकते हैं, यह अपवाद को फेंक देगा यदि निर्दिष्ट पथ अमान्य है या कॉलर के पास आवश्यक अनुमतियाँ नहीं हैं। आपको हमेशा कॉल -टॉक ब्लॉक के अंदर Delete
और सभी अपेक्षित अपवादों को संभालने के लिए कॉल लपेटना चाहिए। संभावित दौड़ की स्थिति के मामले में, लॉजिक को लॉक स्टेटमेंट के अंदर लपेटें।
फ़ाइलें और निर्देशिकाएँ
निर्देशिका में सभी फ़ाइलें प्राप्त करें
var FileSearchRes = Directory.GetFiles(@Path, "*.*", SearchOption.AllDirectories);
निर्दिष्ट निर्देशिका में सभी फ़ाइलों का प्रतिनिधित्व करने, FileInfo
की एक सरणी देता है।
विशिष्ट एक्सटेंशन के साथ फ़ाइलें प्राप्त करें
var FileSearchRes = Directory.GetFiles(@Path, "*.pdf", SearchOption.AllDirectories);
FileInfo
की एक सरणी देता है, निर्दिष्ट निर्देशिका में निर्दिष्ट एक्सटेंशन के साथ सभी फ़ाइलों का प्रतिनिधित्व करता है।
Async एक फाइल को TextWriter का उपयोग करके लिखता है
// filename is a string with the full path
// true is to append
using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename, true))
{
// Can write either a string or char array
await file.WriteAsync(text);
}