حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

آموزش کار با فایل ها و کلاس File در سی شارپ

یکی از عملیات های پر کاربرد در سی شارپ، کار با فایل ها است، خیلی اوقات نیاز است که ما اطلاعات فایلی را بخوانیم یا اطلاعاتی را در یک فایل بریزیم. اکثر زبان های برنامه نویسی از قابلیت کار با فایل ها پشتیبانی می کنند و زبان سی شارپ نیز از این قاعده مستثنی نیست.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

برای یادگیری و آموزش سی شارپ ( آموزش زبان برنامه نویسی سی شارپ ) رایگان به این لینک بروید

برای کار با فایل ها و پوشه ها، باید از کلاس های فضای نام System.IO استفاده کنیم. کار را با بررسی کلاس File شروع می کنیم. این کلاس حاوی یک سری متد static است که می توان بوسیله آن ها عملیات خواندن و نوشتن در فایل را انجام داد. در ابتدا نحوه نوشتن در فایل را توضیح می دهیم، برای نوشتن در یک فایل می توانید از متد WriteAllText استفاده کنید، شیوه استفاده از این متد به صورت زیر است:

System.IO.File.WriteAllText("D:\\Test.txt", "Hello from ITPro.ir");

در دستور بالا، پارامتر اول آدرس فایل و پارامتر دوم محتویات فایل را مشخص می کند. دقت کنید که این دستور در صورت وجود داشتن فایل، محتویات جدید جایگزین محتویات قدیمی شده و در غیر اینصورت فایل جدیدی ایجاد می شود. برای ایجاد فایل می توان از دستور WriteAllLines نیز استفاده کرد، این دستور محتویات فایل را به صورت لیستی از رشته دریافت کرده و در فایل می نویسد:

List<string> lines = new List<string>();
lines.Add("This is line1");
lines.Add("This is line2");
System.IO.File.WriteAllLines("d:\\file.txt", lines);

دستور بالا رشته هایی که در lines اضافه شده اند را در یک فایل می نویسد، اما هر آیتم در یک خط نوشته خواهد شد. این دستور نیز مانند دستور WriteAllText در صورت وجود داشتن فایل، محتویات جدید جایگزین محتویات قدیمی شده و در غیر اینصورت فایل جدیدی ایجاد می شود.دستور دیگری نیز وجود دارد به نام WriteAllBytes که محتویات فایل را به صورت آرایه ای از بایت دریافت کرده و در فایل می نویسد:

var text = "Hello ITPro.ir";
var textBytes = System.Text.Encoding.UTF8.GetBytes(text);
System.IO.File.WriteAllBytes("D:\\file.txt", textBytes);

در دستورات بالاُ بوسیله متد GetBytes‌ ابتدا رشته را به آرایه ای از byte تبدیل کرده و سپس آن را در فایل می نویسیم.اما برای خواندن از فایل ها می توانیم از دستورات ReadAlltext و ReadAllLines و ReadAllBytes استفاده کنیم، برای مثال دستور ReadAllText محتویات یک فایل را خوانده و به صورت یک رشته بر میگرداند:

var text = System.IO.File.ReadAllText("D:\\file.txt");

اما دستور ReadAllLines محتویات فایل را خوانده و به صورت لیستی از رشته ها بر میگرداند که هر آیتم لیست، یک خط از فایل است:

var lines = System.IO.File.ReadAllLines("D:\\file.txt");

foreach (var line in lines)
{
    Console.WriteLine(line);
}

و همینطور دستور ReadAllBytes، محتویات فایل را خوانده و به صورت آرایه ای از byte ها بر میگرداند:

var bytes = System.IO.File.ReadAllBytes("D:\\file.txt");

var text = System.Text.Encoding.UTF8.GetString(bytes);

در کد بالا، دستور GetString، مقدار بازگشتی متد ReadAllBytes را که از نوع آرایه ای از byte ها است به رشته تبدیل می کند. روش های مختلف دیگری نیز برای کار با فایل ها وجود دارد، مانند استفاده از Stream ها که در مطلب جداگانه ای در مورد آن ها صحبت خواهیم کرد. ITPRO باشید


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات