لتصميم وظيفة "القرص الصلب للشبكة"، يجب عليك أولاً أن تكون على دراية بعمليات معالجة الملفات والمجلدات في .NET. فئة الملف وفئة الدليل هما الفئتان الأكثر أهمية. إن فهمها سيسهل إلى حد كبير تنفيذ الوظائف اللاحقة.
ستستخدمفئة System.IO.File وفئة System.IO.FileInfo
المحتوى المتعلق بعمليات نظام الملفات على نطاق واسع في عملية تصميم وتنفيذ "القرص الصلب للشبكة". لذلك، يقدم هذا القسم أولاً بشكل مختصر فئتي .NET المتعلقتين بنظام الملفات.
توفر فئة System.IO.File وفئة System.IO.FileInfo بشكل أساسي عمليات متنوعة تتعلق بالملفات، وتحتاج إلى الرجوع إلى مساحة الاسم System.IO عند استخدامها. يتم عرض سماتها وأساليبها الرئيسية أدناه من خلال أمثلة البرنامج.
(1) طريقة فتح الملف: File.Open
تعريف هذه الطريقة كما يلي:
FileStream Open العام الثابت (مسار السلسلة، وضع FileMode)
الكود التالي يفتح الملف المسمى newFile.txt المخزن في الدليل c:tempuploads، و في الملف اكتب مرحبًا .
ملف مفتوح خاص ()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt",FileMode.Append);
بايت [] معلومات = {(بايت)'h',(بايت)'e',(بايت)'l',(بايت)'l',(بايت)'o'};
TextFile.Write(Info,0,Info.Length);
TextFile.Close();
}
(2) طريقة إنشاء الملف: File.Create
تعريف هذه الطريقة كما يلي:
إنشاء FileStream ثابت عام (مسار سلسلة؛)
يوضح التعليمة البرمجية التالية كيفية إنشاء ملف يسمى newFile.txt ضمن c:tempuploads.
نظرًا لأن الأسلوب File.Create يمنح حق الوصول الكامل للقراءة/الكتابة إلى الملفات الجديدة بشكل افتراضي لجميع المستخدمين، يتم فتح الملف مع حق الوصول للقراءة/الكتابة ويجب إغلاقه قبل أن يتم فتحه بواسطة تطبيق آخر. للقيام بذلك، تحتاج إلى استخدام أسلوب إغلاق فئة FileStream لإغلاق الملف الذي تم إنشاؤه.
MakeFile باطلة خاصة ()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
NewText.Close();
}
(3) طريقة حذف الملف: File.Delete
يتم تعريف هذه الطريقة كما يلي:
حذف الفراغ الثابت العام (مسار السلسلة)؛
يوضح التعليمة البرمجية التالية كيفية حذف ملف newFile.txt في الدليل c:tempuploads.
حذف ملف فارغ خاص ()
{
File.Delete(@"c:tempuploadsnewFile.txt");
}
(4) طريقة نسخ الملف: File.Copy
يتم
تعريف هذه الطريقة على النحو التالي:
نسخ الفراغ الثابت العام (string sourceFileName,string destFileName,bool overwrite);
النسخ الاحتياطي.txt.
نظرًا لأنه تم تعيين معلمة OverWrite الخاصة بأسلوب Cope على القيمة true، إذا كان ملف BackUp.txt موجودًا بالفعل، فسيتم استبداله بالملف المنسوخ.
CopyFile الخاص باطلة ()
{
File.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) طريقة نقل الملف: File.Move
يتم تعريف هذه الطريقة كما يلي:
public static void Move(string sourceFileName,string destFileName);
يمكن للتعليمات البرمجية التالية نقل ملف BackUp.txt ضمن c:tempuploads إلى الدليل الجذر لـ محرك ج.
ملاحظة:
لا يمكن إجراء نقل الملفات إلا ضمن نفس القرص المنطقي. إذا حاولت نقل الملفات من محرك الأقراص c إلى محرك الأقراص d، فسيحدث خطأ.
MoveFile باطلة خاصة ()
{
File.Move(@"c:tempuploadsBackUp.txt"،@"c:BackUp.txt");
}
(6) طريقة تعيين سمات الملف: File.SetAttributes
يتم تعريف هذه الطريقة على النحو التالي:
public static void SetAttributes(string path,FileAttributes fileAttributes);
يمكن للتعليمات البرمجية التالية تعيين سمات الملف c:tempuploadsnewFile.txt إلى للقراءة فقط أو مخفية.
SetFile باطلة خاصة ()
{
File.SetAttributes(@"c:tempuploadsnewFile.txt"،
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
بالإضافة إلى سمات القراءة فقط والمخفية شائعة الاستخدام، تحتوي الملفات أيضًا على أرشيف (حالة أرشيف الملف)، ونظام (ملفات النظام)، ومؤقت (ملفات مؤقتة)، وما إلى ذلك. للحصول على تفاصيل حول سمات الملف، يرجى الرجوع إلى وصف FileAttributes في MSDN.
(7) طريقة لتحديد ما إذا كان الملف موجودًا: File.Exist
يتم تعريف هذه الطريقة كما يلي:
يوجد منطقي ثابت عام (مسار السلسلة)؛
يحدد التعليمة البرمجية التالية ما إذا كان الملف c:tempuploadsnewFile.txt موجودًا. إذا كان موجودًا، فقم أولاً بنسخ الملف، ثم احذفه، وأخيرًا انقل الملف المنسوخ إذا لم يكن موجودًا، فقم أولاً بإنشاء الملف، ثم افتح الملف وقم بإجراء عمليات الكتابة، وأخيرًا قم بتعيين سمات الملف للقراءة فقط؛ ومخفية.
إذا (File.Exists(@"c:tempuploadsnewFile.txt")) // تحديد ما إذا كان الملف موجودًا
{
CopyFile(); // انسخ الملفDeleteFile(); //احذف الملفMoveFile();
}
آخر
{
MakeFile(); // إنشاء ملف OpenFile(); // فتح الملف SetFile();
}
بالإضافة إلى ذلك، توفر فئة الملف مزيدًا من الدعم للنص النصي.
· AppendText: إلحاق نص بملف موجود
· CreateText: إنشاء أو فتح ملف جديد لكتابة النص
· OpenText: فتح ملف نصي موجود للقراءة
ولكن الطريقة المذكورة أعلاه تعمل بشكل أساسي على النص المشفر UTF-8، وبالتالي تظهر غير مرنة بما فيه الكفاية. يوصى بأن يستخدم القراء الكود التالي لتشغيل ملفات txt.
· تنفيذ عملية "القراءة" على ملفات txt. نموذج التعليمات البرمجية هو كما يلي:
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
محتوى ملف السلسلة؛
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· تنفيذ عملية "الكتابة" على ملف txt. نموذج التعليمات البرمجية كما يلي:
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
محتوى ملف السلسلة؛
TxtWriter.Write(FileContent);
TxtWriter.Close();
فئة System.IO.Directory وفئة System.DirectoryInfo
بشكل أساسي عمليات متنوعة على الدليل، وتحتاج إلى الرجوع إلى مساحة الاسم System.IO عند استخدامها. يتم عرض سماتها وأساليبها الرئيسية أدناه من خلال أمثلة البرنامج.
(1) طريقة إنشاء الدليل: Directory.CreateDirectory
يتم تعريف هذه الطريقة كما يلي:
public static DirectoryInfo CreateDirectory(string path);
يوضح التعليمة البرمجية التالية إنشاء دليل يسمى NewDirectory في المجلد c:tempuploads.
MakeDirectory () باطلة خاصة
{
Directory.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) طريقة إعداد سمة الدليل:
يقوم الكود الموجود أسفل DirectoryInfo.Atttributes بتعيين الدليل c:tempuploadsNewDirectory للقراءة فقط ومخفي. مثل سمات الملف، يتم أيضًا تعيين سمات الدليل باستخدام FileAttributes.
SetDirectory () باطلة خاصة
{
DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
(3) طريقة حذف الدليل: Directory.Delete
يتم تعريف هذه الطريقة كما يلي:
حذف الفراغ الثابت العام (مسار السلسلة، منطقي متكرر)؛
يمكن للتعليمات البرمجية التالية حذف الدليل c:tempuploadsBackUp. المعلمة الثانية لطريقة الحذف هي من النوع bool، والتي يمكنها تحديد ما إذا كان سيتم حذف دليل غير فارغ. إذا كانت قيمة المعلمة صحيحة، فسيتم حذف الدليل بأكمله، حتى إذا كان هناك ملفات أو أدلة فرعية في الدليل؛ إذا كانت خاطئة، فسيتم حذف الدليل فقط إذا كان فارغا.
حذف الدليل () باطلة خاصة
{
Directory.Delete(@"c:tempuploadsBackUp"،true);
}
(4) طريقة نقل الدليل: Directory.Move
يتم تعريف هذه الطريقة على النحو التالي:
public static void Move(string sourceDirName, string destDirName);
الكود التالي ينقل الدليل c:tempuploadsNewDirectory إلى c:tempuploadsBackUp.
MoveDirectory () باطلة خاصة
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
الدلائل
الفرعية في الدليل الحالي: Directory.GetDirectories
يتم تعريف هذه الطريقة على النحو التالي:
public static string[] GetDirectories(string path;);
وتخزينها في مجموعة سلسلة.
GetDirectory () الفراغ الخاص
{
سلسلة [] الدلائل؛
الدلائل = الدليل.(@"c:tempuploads");
}
كافة
الملفات في الدليل الحالي: Directory.GetFiles
يتم تعريف هذه الطريقة كما يلي:
public static string[] GetFiles(string path;);
، وقم بتخزينه في مصفوفة سلسلة.
GetFile باطلة خاصة ()
{
سلسلة [] الملفات؛
Files = GetFiles (@"c:tempuploads"،);
}
(7) طريقة تحديد ما إذا كان الدليل موجودًا: Directory.Exist
تم تعريف هذه الطريقة كما يلي:
يوجد منطقي ثابت عام(.
مسار السلسلة؛
);
يحدد التعليمة البرمجية التالية ما إذا كان الدليل c:tempuploadsNewDirectory موجودًا. إذا كان موجودًا، فاحصل أولاً على الدلائل الفرعية والملفات الموجودة في الدليل، ثم انقلها، وأخيرًا احذف الدليل المنقول. إذا لم يكن موجودًا، فقم بإنشاء الدليل أولاً، ثم قم بتعيين سمات الدليل للقراءة فقط والمخفية.
إذا (File.Exists(@"c:tempuploadsNewDirectory")) // تحديد ما إذا كان الدليل موجودًا
{
GetDirectory(); // احصل على الدليل الفرعي GetFile(); // احصل على الملف MoveDirectory();
}
آخر
{
MakeDirectory(); // إنشاء دليل SetDirectory(); // تعيين سمات الدليل
}
ملاحظة:
هناك ثلاث طرق لتحديد المسار، المسار النسبي في الدليل الحالي، المسار النسبي في قرص العمل الحالي، والمسار المطلق. خذ C:TmpBook كمثال (بافتراض أن دليل العمل الحالي هو C:Tmp). "Book"، "TmpBook"، "C:TmpBook" كلها تعني C:TmpBook.
بالإضافة إلى ذلك، "" هو حرف خاص في C#، وتحتاج إلى استخدام "\" للتعبير عنه. نظرًا لأن طريقة الكتابة هذه غير ملائمة، توفر لغة C# الرمز @ لتبسيطها. ما عليك سوى إضافة @ أمام السلسلة لاستخدام "" مباشرةً. لذلك يجب التعبير عن المسار أعلاه كـ "Book"، @"TmpBook"، @"C:TmpBook" في C#.