English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

FileInfo C#

 في هذا المكان، ستعلم كيفية استخدام Class FileInfo للقيام بعمليات القراءة والكتابة على الملفات المادية.

يقدم Class FileInfo نفس الوظائف مثل Class File الثابتة، ولكن يمكنك الحصول على مزيد من التحكم في عمليات القراءة والكتابة على الملف من خلال كتابة كود يدوي لقراءة أو كتابة أوقات البيانات من الملف.

خصائص FileInfo والأساليب المهمة:

الخصائصالاستخدام
Directoryالحصول على مثيل دليل الأب.
DirectoryNameالحصول على سلسلة تمثل مسار الدليل الكامل.
Existsالحصول على قيمة تشير إلى ما إذا كان الملف موجودًا.
Extensionالحصول على سلسلة تمثل جزء التوسع في الملف.
FullNameالحصول على مسار كامل للدليل أو الملف.
IsReadOnlyالحصول أو تعيين قيمة تحدد ما إذا كان الملف قارئًا فقط.
LastAccessTimeالحصول أو تعيين وقت الوصول إلى الملف أو الدليل الحالي آخر مرة.
LastWriteTimeالحصول أو تعيين وقت كتابة الملف أو الدليل الحالي آخر مرة.
Lengthالحصول على حجم الملف الحالي (بأوكتيت).
Nameالحصول على اسم الملف.
الطريقةالاستخدام
AppendTextأنشئ StreamWriter، وأضف نصًا إلى ملف المثال الحالي الذي يمثلهFileInfo.
CopyToاستنساخ ملف موجود إلى ملف جديد، دون السماح بتحديد الملف الموجود.
Createأنشئ ملف.
CreateTextأنشئ StreamWriter لتحرير نص جديد.
Decryptاستخدام طريقة Encrypt لفك تشفير الملفات المشفرة من قبل الحساب الحالي.
Deleteحذف الملف المحدد.
Encryptتشفير الملف، بحيث يمكن فك تشفير الملف فقط من قبل الحسابات المستخدمة لتشفير الملف.
GetAccessControlالحصول على FileSecurityobject، الذي يحتوي على إدخالات قائمة التحكم في الوصول (ACL) للملف المحدد.
MoveToانقل الملف المحدد إلى موقع جديد، وقدم خيار اسم الملف الجديد.
Openافتح ملفًا في نمط FileMode المحدد.
OpenReadأنشئStreamFile قراءة فقط.
OpenTextأنشئStreamReader بت编码UTF8، يمكنه قراءة من ملف نصي موجود.
OpenWriteأنشئStreamFile مكتوب فقط.
Replaceاستبدل محتوى ملف المحدد باستخدامFileInfo الحالي، حذف الملف الأصلي، وأنشئ نسخة احتياطية للملف المتبادل.
ToStringيستخدم شكل السلسلة لتقديم المسار.

يظهر المثال التالي كيفية قراءة البايتات يدويًا من الملف ثم تحويلها إلى نص باستخدام ترميز UTF8:}

مثال: قراءة الملف باستخدام كائن FileInfo

//为指定路径创建FileInfo对象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
//إنشاء مصفوفة بيتات بحجم نفس حجم FileStream
byte[] fileBytes = new byte[fs.Length];
//تحديد مؤشر لتحديد عدد البايتات التي سيتم قراءتها. يتم تقليل المؤشر عند قراءة كل بيت
int numBytesToRead = (int)fileBytes.Length;
//مؤشر يحدد عدد البايتات التي تم قراءتها
int numBytesRead = 0;
//تكرار حتى قراءة جميع البايتات من FileStream
while (numBytesToRead > 0)
{
    int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
        
    if (n == 0)
        break;
    numBytesRead += n;
    numBytesToRead -= n;
}
//بعد قراءة جميع البايتات من FileStream، يمكنك تحويلها إلى نص باستخدام ترميز UTF8
string filestring = Encoding.UTF8.GetString(fileBytes);

كما يظهر الكود أعلاه، يجب عليك كتابة الكثير من الكود لتتمكن من قراءة/كتابة النصوص باستخدام FileSream، بينما يمكنك إكمال نفس العمليات القراءة/كتابة بسهولة باستخدام StreamReader و StreamWriter.

يظهر المثال التالي كيف يمكن لـ StreamReader جعل قراءة النصوص من الملف سهلة:

مثال: قراءة الملف باستخدام StreamReader

//为指定路径创建FileInfo对象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); 
//تأسيس كائن StreamReader باستخدام كائن FileStream الذي سيتم عليه العمل
StreamReader sr = new StreamReader(fs);
//استخدام طريقة ReadToEnd لقراءة جميع المحتويات من الملف
string fileContent = sr.ReadToEnd();
//تحديد بعد إغلاق كائن StreamReader
sr.Close();
fs.Close();

لاحظ أن fi.Open() يحتوي على ثلاثة معلمات:

  • المعدل الأول FileMode هو لإنشاء وإفتاح الملف (إذا لم يكن موجودًا);

  • المعدل الثاني FileAccess هو عملية القراءة؛

  • المعدل الثالث هو مشاركة الملف مع المستخدمين الآخرين لقراءته عند فتح الملف.

يوضح هذا المثال كيف يمكن لـ StreamWriter جعل كتابة النصوص في الملف أسهل:

مثال: استخدامه StreamWriter لتحرير النصوص في الملف

//为指定路径创建FileInfo对象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read ); 
//创建StreamWriter对象以将字符串写入FileSream
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("خط آخر من streamwriter");
sw.Close();

لا يمكن تنفيذ القراءة والكتابة على نفس FileStream في نفس الوقت. إذا كنت قد بدأت في قراءة الملف، فأنشئ FileStream جديدًا لكتابة نفس الملف، مثلما يلي:

مثال: StreamReader و StreamWriter

//为DummyFile.txt创建FileInfo对象
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开DummyFile.txt进行读取操作
FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite , FileShare.ReadWrite); 
//打开DummyFile.txt进行写操作
FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
          
//获取StreamReader
StreamReader sr = new StreamReader(fsToRead);
//使用StreamReader对象读取所有文本
string fileContent = sr.ReadToEnd();
sr.Close();
//获取StreamWriter
StreamWriter sw = new StreamWriter(fsToWrite);
//كتابة بعض النصوص باستخدام StreamWriter
sw.WriteLine("خط آخر من streamwriter");
sw.Close();
//إغلاق جميع Stream objects
fsToRead.Close();
fsToWrite.Close();

لذلك، يمكنك استخدام FileInfo،StreamReader و StreamWriter للقراءة/الكتابة في الملفات المادية.