دانلود نرم افزار - آموزش سی شارپ
دانلود نرم افزار - آموزش سی شارپ

دانلود نرم افزار - آموزش سی شارپ

استریم رایتر StreamWriter

آموزش کار با StreamWriter در سی‌شارپ : نوشتن داده‌ها در فایل‌ها

در سی‌شارپ ، یکی از نیازهای رایج توسعه‌دهندگان ، نوشتن داده‌ها در فایل‌ها به‌صورت متنی است . کلاس StreamWriter  در فضای نام System.IO  ابزاری قدرتمند و ساده برای این منظور فراهم می‌کند. در این مقاله، به‌طور جامع به بررسی StreamWriter ، نحوه استفاده از آن، ویژگی‌ها و نکات مهم مرتبط با آن می‌پردازیم.

StreamWriter  چیست؟

StreamWriter  یک کلاس در دات‌نت است که برای نوشتن کاراکترها و متن‌ها در یک جریان (Stream) به‌صورت ترتیبی طراحی شده است. این کلاس معمولاً برای نوشتن داده‌ها در فایل‌های متنی استفاده می‌شود و از کدگذاری‌های مختلف (مانند UTF-8، ASCII  و غیره) پشتیبانی می‌کند.

چرا از StreamWriter  استفاده کنیم؟

سادگی:  رابط کاربری ساده‌ای برای نوشتن متن در فایل‌ها یا جریان‌ها ارائه می‌دهد.

انعطاف‌پذیری:  امکان استفاده از کدگذاری‌های مختلف برای پشتیبانی از زبان‌ها و کاراکترهای خاص.

مدیریت منابع:  با استفاده از بلوک using ، مدیریت خودکار منابع را فراهم می‌کند و از نشت حافظه جلوگیری می‌کند.

نحوه استفاده از StreamWriter

برای شروع کار با StreamWriter   باید فضای نام System.IO  را به پروژه خود اضافه کنید. در ادامه، مراحل اصلی استفاده از این کلاس را بررسی می‌کنیم.

 1 - ایجاد یک نمونه از StreamWriter

شما می‌توانید یک نمونه از StreamWriter  را با مشخص کردن مسیر فایل یا یک جریان (Stream) ایجاد کنید. مثال زیر نشان می‌دهد چگونه یک فایل متنی جدید ایجاد کرده و در آن بنویسید:

using System;

using System.IO;

class Program

{

    static void Main()

    {

        string filePath = "example.txt";

        using (StreamWriter writer = new StreamWriter(filePath))

        {

            writer.WriteLine("سلام رضا!");

        }

        Console.WriteLine("نوشتن در فایل با موفقیت انجام شد.");

    }

}

در این کد:

using  تضمین می‌کند که پس از اتمام کار ، منابع به‌درستی آزاد شوند.

WriteLine  یک خط متن را در فایل می‌نویسد و به خط بعدی می‌رود.

 2 - متدهای اصلی StreamWriter

StreamWriter  چندین متد مفید برای نوشتن داده‌ها ارائه می‌دهد:

Write(string) :  یک رشته را بدون افزودن خط جدید می‌نویسد.

WriteLine(string) :  یک رشته را می‌نویسد و به خط جدید می‌رود.

Flush() :  بافر داخلی را خالی کرده و داده‌ها را به جریان یا فایل منتقل می‌کند.

Close() :  جریان را می‌بندد (در صورت استفاده از using  نیازی به فراخوانی صریح آن نیست) .

مثال:

using (StreamWriter writer = new StreamWriter("example.txt"))

{

    writer.Write("این یک متن است ");

    writer.WriteLine("که در یک خط نوشته می‌شود.");

    writer.WriteLine("خط دوم!");

}

 3 - استفاده از کدگذاری (Encoding)

به‌طور پیش‌فرض، StreamWriter  از کدگذاری UTF-8 استفاده می‌کند، اما می‌توانید کدگذاری دیگری را مشخص کنید. برای مثال:

using (StreamWriter writer = new StreamWriter("example.txt", false, System.Text.Encoding.UTF32))

{

    writer.WriteLine("متن با کدگذاری UTF-32");

}

پارامتر دوم (false) مشخص می‌کند که فایل از نو نوشته شود (در صورت true، به انتهای فایل اضافه می‌شود).

نکات مهم در استفاده از StreamWriter

مدیریت استثناها:  هنگام کار با فایل‌ها، ممکن است خطاهایی مانند عدم دسترسی به فایل رخ دهد. بهتر است از بلوک try-catch  استفاده کنید:

try

{

    using (StreamWriter writer = new StreamWriter("example.txt"))

    {

        writer.WriteLine("متن آزمایشی");

    }

}

catch (IOException ex)

{

    Console.WriteLine("خطا در نوشتن فایل: " + ex.Message);

}

اضافه کردن به فایل  (Append) :  برای افزودن متن به انتهای فایل موجود، از پارامتر append  استفاده کنید:

using (StreamWriter writer = new StreamWriter("example.txt", true))

{

    writer.WriteLine("متن جدید به انتها اضافه شد.");

}

بستن جریان:  اگر از using  استفاده نکنید، باید به‌صورت دستی Close()  یا Dispose()  را فراخوانی کنید تا منابع آزاد شوند.

مثال کاربردی: ثبت لاگ‌ها

یکی از کاربردهای رایج StreamWriter ، ثبت لاگ‌ها در یک فایل است:

public class Logger

{

    private readonly string logFilePath = "log.txt";

 

    public void Log(string message)

    {

        using (StreamWriter writer = new StreamWriter(logFilePath, true))

        {

            writer.WriteLine($"{DateTime.Now}: {message}");

        }

    }

}

class Program

{

    static void Main()

    {

        Logger logger = new Logger();

        logger.Log("برنامه شروع شد.");

        logger.Log("یک عملیات انجام شد.");

    }

}

تفاوت StreamWriter  با   File.WriteAllText 

شاید بپرسید چرا از StreamWriter  استفاده کنیم وقتی متدهای ساده‌تری مثل File.WriteAllText  وجود دارند؟ پاسخ این است:

File.WriteAllText  برای نوشتن یک‌باره کل متن مناسب است، اما کنترل کمی ارائه می‌دهد.

StreamWriter  برای نوشتن ترتیبی و در سناریوهایی که نیاز به مدیریت جریان یا نوشتن خط به خط دارید، ایده‌آل است.

جمع‌بندی

StreamWriter  ابزاری قدرتمند و انعطاف‌پذیر برای نوشتن داده‌های متنی در فایل‌ها و جریان‌ها در سی‌شارپ است. با استفاده از این کلاس، می‌توانید به‌راحتی فایل‌های متنی ایجاد کنید، به آن‌ها اضافه کنید و حتی کدگذاری دلخواه خود را اعمال کنید. با رعایت نکاتی مثل مدیریت استثناها و آزادسازی منابع، می‌توانید کدی تمیز و کارآمد بنویسید.


نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد