فتح الملفات وإغلاقها بأمان باستخدام

مكتمل

للعمل مع ملف في C#، تحتاج أولا إلى فتحه . يمنحك فتح ملف كائن دفق، مثل StreamReader أو StreamWriter، تقرأ منه أو تكتب إليه. عند الانتهاء، تحتاج إلى إغلاق الملف حتى يتمكن نظام التشغيل من تحرير موارده وحفظ أي عمليات كتابة معلقة.

مشكلة نسيان إغلاق ملف

يمكنك فتح ملف باستخدام StreamReader وإغلاقه باستخدام .Close().

StreamReader reader = new StreamReader("notes.txt");
string contents = reader.ReadToEnd();
Console.WriteLine(contents);
reader.Close();

المشكلة هي أنه إذا حدث خطأ بعد فتح الملف ولكن قبل إغلاقه، يبقى الملف مفتوحا، مما قد يؤدي إلى فقدان البيانات أو الملفات المؤمنة أو تسرب الموارد.

استخدام عبارة الاستخدام

الطريقة الأكثر أمانا للعمل مع الملفات في C# هي using عبارة . يقوم تلقائيا بإغلاق الملف عند انتهاء الكتلة، حتى إذا حدث خطأ.

using (StreamReader reader = new StreamReader("notes.txt"))
{
    string contents = reader.ReadToEnd();
    Console.WriteLine(contents);
} // File is automatically closed here

يدعم C# الحديث أيضا إعلانا أقصر باستخدام يغلق الملف في نهاية النطاق المغلق، دون الحاجة إلى الأقواس الخاصة به.

using StreamReader reader = new StreamReader("notes.txt");
string contents = reader.ReadToEnd();
Console.WriteLine(contents);
// File is automatically closed at the end of this block

فئة الملف: خيار أبسط

بالنسبة للعديد من المهام الشائعة File ، توفر الفئة أساليب ثابتة تفتح ملفا أو تقرأه أو تكتبه وتغلقه في مكالمة واحدة، دون الحاجة إلى عبارة صريحة using على الإطلاق.

string contents = File.ReadAllText("notes.txt");
Console.WriteLine(contents);

ملحوظة

خلف الكواليس، لا يزال File.ReadAllText() يفتح ويغلق الملف بأمان. يمكنك الوصول إلى أساليب الملف هذه للقراءات والكتابة المباشرة، واستخدام StreamReader أو StreamWriter باستخدام عندما تحتاج إلى مزيد من التحكم، مثل القراءة سطرا سطرا.

افتراضي أكثر أمانا

أيا كان النهج الذي تختاره، تجنب الاتصال بنفسك .Close() . استخدم usingأو أسلوبا File يعالجه نيابة عنك.