C# File I/O

Introduction to C# File I/O

Program में file से input लेना और file में output store करना file I/O कहलाता है। यह एक बहुत ही महत्वपूर्ण feature है जो सभी modern programming languages में available है।

आमतौर पर आप program में input keyboard के द्वारा pass करते है और output computer screen पर देखते है। Keyboard और computer screen standard input/output device है। By default इन्हें ही प्रयोग किया जाता है।

लेकिन आप चाहे तो files के द्वारा भी किसी program में input pass कर सकते है और output store करके देख सकते है। Files द्वारा input/output perform करने की 2 प्रमुख advantages होती है।

Automate Input Process

जब standard input device (keyboard) द्वारा program को input pass किया जाता है तो ऐसा user द्वारा manually किया जाता है। यदि input data बहुत अधिक है तो इस प्रकार input pass करना परेशानी का विषय बन सकता है। साथ ही समय की भी हानि होती है।

उदाहरण के लिए आपको input के रूप में 200 employees के नाम pass करने है तो इस कार्य में आपको काफी समय लग जाएगा और आप परेशान भी हो जाएंगे।

लेकिन file के द्वारा सभी 200 employees के नाम आप कुछ seconds में input के रूप में pass कर सकते है। इसके लिए आपको घंटों बैठकर keyboard पर type करने की आवश्यकता नहीं है।

Permanent Storage

जब आप standard output device (screen) पर output देखते है तो वह कुछ समय के लिए ही available होता है। जैसे ही program terminate होता है output window भी बंद हो जाती है। यदि वह output छोटा ना हो तो आप उसे याद भी नहीं रख सकते है।

जब आप file में output को store करते है तो वह permanently store हो जाता है। आप file को open करके कभी भी output देख सकते है। इसके अलावा आप file से output को copy और print भी कर सकते है। File में store किये गए output को किसी और program के लिए input के रूप में भी उपयोग किया जा सकता है।

System.IO

C# में standard input/output और error streams को System.Console namespace में available types (classes, structs, interfaces आदि) द्वारा handle किया जाता है।

C# File input/output और basic file/directory support के लिए System.IO namespace provide करती है। इस namespace में बहुत important classes available है जो अलग अलग तरह से files के साथ work करने के facility provide करती है।

System.IO namespace में available classes की list निचे दी जा रही है।

  1. Binary Reader – Primitive data types को binary values के रूप में read करने के लिए इस class का प्रयोग किया जाता है।
  2. Binary Writer – Primitive data types को binary values के रूप में किसी stream में write करने के लिए इस class का प्रयोग किया जाता है।
  3. Buffered Stream – किसी दूसरी stream के read/write operations पर buffer stream add करने के लिए इस class का प्रयोग किया जाता है।
  4. Directory – Directories और subdirectories को create, move और enumerate करने के लिए यह class static methods provide करती है। इस class को inherit नहीं किया जा सकता है।
  5. DirectoryInfo – Directories और subdirectories को create, move और enumerate करने के लिए यह class instance methods provide करती है। इस class को भी नहीं inherit किया जा सकता है।
  6. DirectoryNotFoundException – Directory नहीं मिलने पर throw की जाने वाली exception इस class द्वारा represent की जाती है। Catch block में इस class का object create करके आप ऐसी exceptions को handle कर सकते है।
  7. DriveInfo – किसी drive पर available information को access करने के लिए इस class का प्रयोग किया जाता है।
  8. DriveNotFoundException – Access की जाने वाली drive available नहीं होने पर जो exception generate होती है वह इस class द्वारा represent की जाती है।
  9. EndOfStreamException – Stream के खत्म होने के बाद भी reading जारी रखने से generate होने वाली exception इस class द्वारा represent की जाती है।
  10. ErrorEventArgs – FileSystemWatcher.Error event के लिए यह class information provide करती है।
  11. File – Single file को create, copy, move, delete और open करने के लिए यह class static methods provide करती है। यह class FileStream class के objects create करने में मदद करती है।
  12. FileFormatException – कोई input file या stream किसी certain type की नहीं होने पर जो exception generate होती है वह इस class द्वारा represent की जाती है।
  13. FileInfo – Files को create, copy, move, delete और open करने के लिए properties और instance methods यह class provide करती है। साथ ही यह class FileStream objects create करने के लिए भी उपयोग की जाती है।
  14. FileLoadException – Managed assembly load नहीं होने पर generate होने वाली exception इस class द्वारा represent की जाती है।
  15. FileNotFoundException – Non existed file को access करने से generate होने वाली exception इस class द्वारा represent की जाती है।
  16. FileStream – किसी file के लिए यह class stream provide करती है। यह class synchronous और asynchronous read write operations को support करती है।
  17. FileSystemEventArgs – Directory events के लिए changed, created, deleted data यह class provide करती है।
  18. FileSystemInfo – FileInfo और DirectoryInfo objects के लिए base class यह class provide करती है।
  19. FileSystemWatcher – File system change notifications को सुनना और directory या file change होने पर events raise करना इस class द्वारा किया जाता है।
  20. InternalBufferOverflowException – Internal buffer overflow होने पर throw की जाने वाली exception इस class द्वारा represent की जाती है।
  21. InvalidDataException – Data stream invalid format में होने पर throw की जाने वाली exception इस class द्वारा represent की जाती है।
  22. IODescription Attribute – Event, extender और properties को reference करते समय designers द्वारा display किये जाने वाले description visuals को set करने के लिए यह class use की जाती है।
  23. IOException – I/O error आने पर generate होने वाली exception इस class द्वारा represent की जाती है।
  24. MemoryStream – यह class ऐसी stream create करती है जिसकी backing store memory होती है।
  25. Path – File और directory path की information store करने वाली strings पर operations perform करने के लिए इस class का प्रयोग किया जाता है।
  26. PathTooLongException – Path system द्वारा define की गयी maximum length से अधिक होने पर generate होने वाली error इस exception class द्वारा represent की जाती है।
  27. PipeException – किसी named pipe में generate होने वाली error को इस exception class द्वारा represent किया जाता है।
  28. RenamedEventArgs – Renamed events के लिए यह class data provide करती है।
  29. Stream – यह class bytes की sequence का generic view provide करती है। यह एक abstract class होती है।
  30. StreamReader – यह class एक TextReader (stream) implement करती है जो byte stream से characters को read करती है।
  31. StreamWriter – यह class एक TextWriter (stream) implement करती है जो byte stream में characters को write करती है।
  32. StringReader – यह class एक TextReader (stream) implement करती है जो string read करती है।
  33. StringWriter – String में information को write करने के लिए यह class एक TextWriter (stream) implement करती है।
  34. TextReader – यह class एक reader stream को represent करती है जो characters की series को read करती है।
  35. TextWriter – यह class एक writer stream को represent करती है जो characters की series को write कर सकती है।
  36. UnmanagedMemoryAccessor – Managed code में से unmanaged memory blocks का random access यह class provide करती है।
  37. UnmanagedMemoryStream – Managed code में से unmanaged memory blocks का access यह class provide करती है।

ऊपर बताई गयी हर class file operations में अलग अलग तरह से मदद करती है। हालाँकि basic file operations आप File class के static methods द्वारा perform कर सकते है। लेकिन यदि आपका data बहुत अधिक है तो आपको stream classes का प्रयोग करना चाहिए नहीं तो आपकी application crash हो सकती है।

जब stream का प्रयोग किया जाता है तो data directly application तक पहुँचने से पहले stream द्वारा buffer में store किया जाता है। इसके बाद data को break करके धीरे धीरे small units में application तक पहुँचाया जाता है। इससे application पर एक बार में भार नहीं पड़ता है और application ठीक तरह से कार्य करती है।

इस tutorial में simplicity और usability के आधार पर File class द्वारा ही file I/O operations perform करना बताया जाएगा। हालाँकि जैसा की मैने पहले बताया अलग अलग तरह के operations के लिए विभिन्न classes available जिन्हें आप अपनी आवश्यकता के अनुसार प्रयोग कर सकते है।

C# File Class

System.IO namespace में available File class file operations को handle करने के लिए static methods provide करती है। हर task के लिए एक अलग class provide की गयी है। File class के methods use करने में बहुत ही आसान है।

File class के द्वारा आप files create, copy, delete, move और open कर सकते है। क्योंकि यह class static methods provide करती है इसलिए आप को उन्हें access करने के लिए object create करने की आवश्यकता नहीं होती है। आप directly File class के नाम के साथ dot (.) operator के प्रयोग से इन methods को access करते है।

File class में available कुछ महत्वपूर्ण methods के बारे में निचे बताया जा रहा है।

  1. Exists(file-name/path)
  2. Create(string-path)
  3. ReadAllText(file-name/path)
  4. WriteAllText(file-name/path, data-string)
  5. AppendAllText(“file-name/path”,new-data-string)

File class आपको basic file operations perform करने की ability provide करती है। Advanced file operations के लिए आप available classes में से आवश्यक class use कर सकते है।

Example of C# File I/O

C# में basic file operation perform करना निचे उदाहरण द्वारा समझाया जा रहा है।

using System;
using System.IO; class myClass
{
    static void Main(string[] args)
    {
         string path = @”c:temp/testFile.txt”;
         string writeToFile = “Best Hindi Tutorials”;         
         File.Create(path);         
         File.WriteAllText(path, writeToFile);         
         string readFromFile = File.ReadAllText(path);         
         Console.WriteLine(“Input from file is : {0}”,readFromFile);
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Best Hindi Tutorials