अतुल्यकालिक फ़ाइल इनपुट और आउटपुट लागू करें

Complete

फ़ाइल इनपुट और आउटपुट ऑपरेशन कई अनुप्रयोगों के लिए आवश्यक हैं, जिससे उन्हें हार्ड ड्राइव पर फ़ाइलों को पढ़ने और लिखने की अनुमति मिलती है। सी # में, फ़ाइल इनपुट और आउटपुट (फ़ाइल I/O) को तुल्यकालिक या अतुल्यकालिक रूप से निष्पादित किया जा सकता है। अतुल्यकालिक फ़ाइल I/O विशेष रूप से अनुप्रयोग प्रदर्शन और जवाबदेही में सुधार के लिए उपयोगी है, विशेष रूप से उन परिदृश्यों में जहाँ फ़ाइल संचालन में महत्वपूर्ण समय लग सकता है, जैसे बड़ी फ़ाइलों को पढ़ना या हार्ड ड्राइव पर डेटा लिखना।

फ़ाइलों को पढ़ने और लिखने के लिए एसिंक विधियाँ बनाना

async await सी # में और कीवर्ड आपको अतुल्यकालिक तरीके बनाने की अनुमति देते हैं जो मुख्य थ्रेड को अवरुद्ध किए बिना फ़ाइल I / O संचालन कर सकते हैं। यह उपयोगकर्ता इंटरफ़ेस वाले अनुप्रयोगों में विशेष रूप से उपयोगी है, जहां मुख्य थ्रेड को अवरुद्ध करने से जमे हुए या अनुत्तरदायी UI हो सकता है। और System.IOSystem.Text.Json नामस्थान अतुल्यकालिक रूप से फ़ाइल I/O कार्रवाई करने के लिए कक्षाएं और विधियाँ प्रदान करते हैं।

उदाहरण के लिए, File नामस्थान में वर्ग अतुल्यकालिक रूप से फ़ाइलों को System.IO पढ़ने और लिखने के लिए विधियाँ प्रदान करता है। File.ReadAllTextAsync विधि एक फ़ाइल की सामग्री को अतुल्यकालिक रूप से पढ़ती है, जबकि File.WriteAllTextAsync विधि एक फ़ाइल को अतुल्यकालिक रूप से पाठ लिखती है। ये विधियां ए Task<string> या Task जो एसिंक्रोनस ऑपरेशन का प्रतिनिधित्व करती हैं, जिससे आप कॉलिंग थ्रेड को अवरुद्ध किए बिना उनके पूरा होने की प्रतीक्षा करने के await लिए कीवर्ड का उपयोग कर सकते हैं।

System.Text.Json नामस्थान में, JsonSerializer वर्ग JSON डेटा को क्रमबद्ध और deserialize करने के लिए अतुल्यकालिक विधियाँ प्रदान करता है। JsonSerializer.SerializeAsync विधि किसी ऑब्जेक्ट को JSON स्ट्रिंग में अतुल्यकालिक रूप से क्रमबद्ध करती है, जबकि JsonSerializer.DeserializeAsync विधि JSON स्ट्रिंग को किसी ऑब्जेक्ट को अतुल्यकालिक रूप से deserialize करती है। ये विधियाँ एक Task भी लौटाती हैं जो अतुल्यकालिक ऑपरेशन का प्रतिनिधित्व करती है।

निम्न कोड नमूना प्रदर्शित करता है कि कैसे किसी C# ऑब्जेक्ट को क्रमबद्ध करने वाले एसिंक्रोनस विधियाँ बनाएँ, JSON स्ट्रिंग को फ़ाइल में लिखें, फ़ाइल सामग्री को स्ट्रिंग में पढ़ें, और JSON स्ट्रिंग को वापस C# ऑब्जेक्ट में deserialize करें:


using System;
using System.IO;
using System.Text.Json;
using System.Threading.Tasks;

public class Account
{
    public string Name { get; set; }
    public decimal Balance { get; set; }
}

public class Program
{
    public static async Task Main()
    {
        // Combine a directory and file name, then create the directory if it doesn't exist
        string directoryPath = @"C:\TempDir";
        if (!Directory.Exists(directoryPath))
        {
            Directory.CreateDirectory(directoryPath);
        }

        string fileName = "account.json";
        string filePath = Path.Combine(directoryPath, fileName);

        Account account = new Account { Name = "Elize Harmsen", Balance = 1000.00m };

        // Save account data to a file asynchronously
        await SaveAccountDataAsync(filePath, account);

        // Load account data from the file asynchronously
        Account loadedAccount = await LoadAccountDataAsync(filePath);
        Console.WriteLine($"Name: {loadedAccount.Name}, Balance: {loadedAccount.Balance}");
    }

    public static async Task SaveAccountDataAsync(string filePath, Account account)
    {
        string jsonString = JsonSerializer.Serialize(account);
        await File.WriteAllTextAsync(filePath, jsonString);
    }

    public static async Task<Account> LoadAccountDataAsync(string filePath)
    {
        string jsonString = await File.ReadAllTextAsync(filePath);
        return JsonSerializer.Deserialize<Account>(jsonString);
    }
}

इस उदाहरण में, विधि किसी SaveAccountDataAsync ऑब्जेक्ट को JSON स्ट्रिंग में Account क्रमबद्ध करती है और इसे फ़ाइल में अतुल्यकालिक रूप से लिखती है। LoadAccountDataAsync विधि फ़ाइल से JSON स्ट्रिंग को पढ़ती है और इसे अतुल्यकालिक रूप से ऑब्जेक्ट Account में वापस deserializes करती है। Main विधि दर्शाती है कि कीवर्ड का उपयोग करके इन अतुल्यकालिक विधियों को कैसे कॉल किया जाएawait

यह एप्लिकेशन को मुख्य थ्रेड को अवरुद्ध किए बिना फ़ाइल I/O संचालन करने की अनुमति देता है, प्रदर्शन और जवाबदेही में सुधार करता है। निर्देशिका बनाने के लिए विधि का Directory.CreateDirectory उपयोग किया जाता है यदि यह मौजूद नहीं है, तो यह सुनिश्चित करना कि फ़ाइल सफलतापूर्वक लिखी जा सकती है।

सारांश

इस इकाई में, आपने सीखा कि सी # में एसिंक्रोनस फ़ाइल इनपुट और आउटपुट ऑपरेशन को कैसे लागू किया जाए। आपने फ़ाइलों को पढ़ने और लिखने के लिए अतुल्यकालिक विधियाँ बनाने के async लिए और await कीवर्ड के उपयोग का पता लगाया। इन तकनीकों का उपयोग करके, आप फ़ाइल I/O संचालन करते समय अपने अनुप्रयोगों के प्रदर्शन और जवाबदेही में सुधार कर सकते हैं।

प्रमुख बिंदु

  • फ़ाइल इनपुट और आउटपुट ऑपरेशन सी # में तुल्यकालिक या अतुल्यकालिक रूप से किया जा सकता है।
  • एसिंक्रोनस फ़ाइल I/O अनुप्रयोग प्रदर्शन और जवाबदेही में सुधार करता है।
  • async और await कीवर्ड का उपयोग फ़ाइल I/O संचालन के लिए अतुल्यकालिक विधियों को बनाने के लिए किया जाता है।
  • और System.IOSystem.Text.Json नामस्थान अतुल्यकालिक रूप से फ़ाइल I/O कार्रवाई करने के लिए कक्षाएं और विधियाँ प्रदान करते हैं।
  • File क्लास और JsonSerializer क्लास का उपयोग प्रदान किए गए उदाहरण में एसिंक्रोनस फ़ाइल I/O ऑपरेशन प्रदर्शित करने के लिए किया जाता है।