جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
نظم التشغيل 1 - معمل تدفقات الملفات
بناء محاكي ملفات على طراز لينكس باستخدام FileStream وStreamReader وStreamWriter
يبني هذا المعمل محاكيا لسطر الأوامر يطابق أوامر على طراز الصدفة (Shell) مع عمليات ملفات قائمة على التدفقات
System.IO.Stream
الصنف الأساسي لكل التدفقات في .NET
FileStream
للملفات
MemoryStream
للبيانات في الذاكرة
NetworkStream
لبيانات الشبكة
File.Create(name) كائن FileStream يجب إغلاقه لتحرير مقبض الملفvar fs = File.Create(name);
fs.Close(); // Important: always close the stream after useFile.Delete(name) الملف مباشرة؛ فلا يوجد تدفق يجب إدارته للحذف نفسهprivate static void Rm()
{
var name = Console.ReadLine();
if (!ValidateExists(name)) return;
File.Delete(name);
}File.ReadAllText(name) محتوى الملف بأكمله كسلسلة نصيةvar content = File.ReadAllText(name);
Console.WriteLine(content);File.AppendAllText(name, text) النص الجديد في نهاية الملف دون المساس بالمحتوى الموجودFile.AppendAllText(name, text);FileMode.OpenOrCreate الملف إن كان موجودا، أو ينشئه إن لم يكنFileAccess.ReadWrite بالقراءة والكتابة معا على التدفق نفسهSeek(0, SeekOrigin.Begin) موضع التدفق إلى بداية الملف قبل القراءةFileStream fs = new FileStream(name, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamReader sr = new StreamReader(fs);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
string str = sr.ReadLine();FileMode.Create ملفا جديدا أو يكتب فوق ملف موجودFlush() البيانات المخزنة مؤقتا على الكتابة في الملف فوراStreamWriter) أولا، ثم FileStream الأساسيFileStream fs = new FileStream(name, FileMode.Create, FileAccess.ReadWrite);
StreamWriter w = new StreamWriter(fs);
w.Write(text);
w.Flush();
w.Close();
fs.Close();| الوضع | الوصف |
|---|---|
CreateNew | ينشئ ملفا جديدا؛ ويرمي استثناء إن كان الملف موجودا بالفعل |
Create | ينشئ ملفا جديدا، ويكتب فوق ملف موجود إن وجد |
Open | يفتح ملفا موجودا؛ ويرمي استثناء إن لم يكن موجودا |
OpenOrCreate | يفتح الملف إن كان موجودا، أو ينشئ ملفا جديدا إن لم يكن |
Truncate | يفتح الملف ويفرغ محتواه الموجود |
Append | يفتح الملف وينقل الموضع إلى النهاية للإلحاق |
| الوصول | الوصف |
|---|---|
Read | يمنح وصولا للقراءة فقط على التدفق |
Write | يمنح وصولا للكتابة فقط على التدفق |
ReadWrite | يمنح وصول القراءة والكتابة معا على التدفق نفسه |
private static bool ValidateExists(string? name)
{
if (string.IsNullOrEmpty(name)) return false;
if (!File.Exists(name)) return false;
return true;
}using كي يغلق التدفق تلقائيا عند انتهاء الكتلةFlush() عند كتابة بيانات حرجة، لضمان وصولها إلى القرص فوراtry-catch في كود الإنتاجFileStream هو الصنف منخفض المستوى لإدخال وإخراج الملفات؛ ويضيف StreamReader/StreamWriter عمليات نصية مريحة فوقهFile.ReadAllText وFile.AppendAllText وFile.Create أغلفة مساعدة تدير تدفقا داخلياFileMode في كيفية فتح الملف أو إنشائه؛ ويتحكم FileAccess فيما إذا كان التدفق يقرأ أو يكتب أو كليهماFlush() حين يجب أن تصل الكتابة إلى القرص فوراMahmoud Abas|معمل: تدفقات الملفات (File Streams) في C#