0
                                خواندن و نوشتن روی فایل ها در C#.Net
خواندن و نوشتن روی فایل ها به صورت یک کلاس در C#.Net
در این پست قصد داریم تا با استفاده از یک کلاس روی فایل های با فرمت های txt یا html و... با استفاده از C#.Net این نوع فایل ها رو بخوانیم و یا چیزی داخل آنها بنویسیم.
برای این کار کافیست یک کلاس به نام File ایجاد کنید و کدهای زیر را به آن اضافه کنید
/// <summary>
/// پیاده سازی متد های خواندن و نوشتن در فایل
/// </summary>
public static class File
{
    //بدنه متد خواند یک فایل در پروژه
    #region ReadFromFiles_Read(string pathName)
    /// <summary>
    /// متد خواندن فابل ها در پروژه
    /// این متد یک مسیر فیزیکی میگیرد
    /// </summary>
    /// <param name="pathName"></param>
    /// <returns></returns>
    public static string Read(string pathName)
    {
        //اگر مسیر نال بود امپتی برمیگردونه
        if (pathName == null)
        {
            return (string.Empty);
        }
        //تریم میکنیم
        pathName = pathName.Trim();
        //اگر باز خالی بود خالی برمیگردونه
        if (pathName == string.Empty)
        {
            return (string.Empty);
        }
        //اگر فایل وجود نداشت خالی برمیگردونه
        if (System.IO.File.Exists(pathName) == false)
        {
            return (string.Empty);
        }
        string strResult = string.Empty;
        //از استریم ریدر استفاده کردیم
        System.IO.StreamReader oStream = null;
        try
        {
            oStream =
                new System.IO.StreamReader(pathName, System.Text.Encoding.UTF8);
            strResult = oStream.ReadToEnd();
        }
        //بستن شی استریم ریدر
        finally
        {
            if (oStream != null)
            {
                oStream.Close();
                oStream.Dispose();
                oStream = null;
            }
        }
        // ریترن میشه
        return (strResult);
    }
    #endregion ReadFromFiles_Read(string pathName)
    //بدنه متد نوشتن در فایل های پروژه
    #region WriteToFiles_Write(string pathName, string text, bool append)
    /// <summary>
    /// متد رایت که یک مسیر و یک متن و یک بولین اپند میگیره
    /// </summary>
    /// <param name="pathName"></param>
    /// <param name="text"></param>
    /// <param name="append"></param>
    public static void Write(string pathName, string text, bool append)
    {
        //اگر مسیر نال باشه از متد خارج میشود
        if (pathName == null)
        {
            return;
        }
        //رشته حاوی مسیر تریم میشود
        pathName = pathName.Trim();
        //اگر امپتی شد از متد خارج میشود
        if (pathName == string.Empty)
        {
            return;
        }
        //پارامتر دوم متد که یک متن هست اگر نال بود برابر با امپتی میشود
        if (text == null)
        {
            text = string.Empty;
        }
        //از استریم رایتر استفاده کردیم
        System.IO.StreamWriter oStream = null;
        try
        {
            //نیو شدن استریم رایتر با پارامتر اول و سوم متد جاری
            oStream =
                new System.IO.StreamWriter(pathName, append, System.Text.Encoding.UTF8);
            //نوشتن در متن که پرامتر دوم متد جاری است
            oStream.Write(text);
        }
        //بستن شی استریم رایتر
        finally
        {
            if (oStream != null)
            {
                oStream.Close();
                oStream.Dispose();
                oStream = null;
            }
        }
    }
    #endregion Write(string pathName, string text, bool append)    
}
تمام جاهای که نیاز به توضیح دارد در بین کدها نوشته شده.
در این کلاس از دو متد استاتیک ، یکی برای خواندن فایل و دیگری برای نوشتن روی فایل ها نوشته شده است.
متد Read
متد Read مسیر فایل را دریافت کرده و سپس آن را خوانده و در نهایت یک رشته String بر میگرداند.
توجه کنید که باید به صورت زیر مسیر فایل را بدهید
File.Read(Server.MapPath("~/file/file1.txt"));
متد Write
متد Write ابتدا مسیر فایل و سپس رشته ای که می خواهید اضافه کنید را دریافت می کند و در نهایت مشخص می کنید که می خواهید رشته جدید بروی فایل اضافه شود یا جایگزین رشته قبلی شود که به صورت True و False می توانید مشخص کنید.
File.Write(Server.MapPath("~/file/file1.txt"),"newstr",true);
                    
                    
                    
نظر / سوال