C# FileInfo

 在這里,您將學(xué)習(xí)如何使用FileInfo類對物理文件執(zhí)行讀/寫操作。

FileInfo類提供與靜態(tài)File類相同的功能,但是您可以通過手動編寫用于從文件讀取或?qū)懭胱止?jié)的代碼來對文件的讀/寫操作具有更多控制權(quán)。

FileInfo的重要屬性和方法:

屬性用法
Directory獲取父目錄的實例。
DirectoryName獲取表示目錄的完整路徑的字符串。
Exists獲取一個值,該值指示文件是否存在。
Extension獲取表示文件擴展部分的字符串。
FullName獲取目錄或文件的完整路徑。
IsReadOnly獲取或設(shè)置一個值,該值確定當(dāng)前文件是否為只讀。
LastAccessTime獲取或設(shè)置上次訪問當(dāng)前文件或目錄的時間
LastWriteTime獲取或設(shè)置上次寫入當(dāng)前文件或目錄的時間
Length獲取當(dāng)前文件的大?。ㄒ宰止?jié)為單位)。
Name獲取文件的名稱。
方法用法
AppendText創(chuàng)建一個StreamWriter,將文本追加到FileInfo的此實例表示的文件。
CopyTo將現(xiàn)有文件復(fù)制到新文件,不允許覆蓋現(xiàn)有文件。
Create創(chuàng)建一個文件。
CreateText創(chuàng)建一個寫入新文本文件的StreamWriter。
Decrypt使用Encrypt方法解密由當(dāng)前帳戶加密的文件。
Delete刪除指定的文件。
Encrypt加密文件,以便只有用于加密文件的帳戶才能解密該文件。
GetAccessControl獲取一個FileSecurity對象,該對象封裝了指定文件的訪問控制列表(ACL)條目。
MoveTo將指定的文件移動到新位置,并提供指定新文件名的選項。
Open在指定的FileMode中打開一個。
OpenRead創(chuàng)建一個只讀FileStream。
OpenText創(chuàng)建具有UTF8編碼的StreamReader,該編碼器可從現(xiàn)有文本文件讀取。
OpenWrite創(chuàng)建一個只寫FileStream。
Replace用當(dāng)前FileInfo對象描述的文件替換指定文件的內(nèi)容,刪除原始文件,并創(chuàng)建替換文件的備份。
ToString以字符串形式返回路徑。

下面的示例顯示如何手動從文件讀取字節(jié),然后使用UTF8編碼將它們轉(zhuǎn)換為字符串:

示例:使用FileInfo類讀取文件

//為指定路徑創(chuàng)建FileInfo對象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");

//打開文件進行讀\寫
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 

//創(chuàng)建與FileStream長度相同大小的字節(jié)數(shù)組
byte[] fileBytes = new byte[fs.Length];

//定義計數(shù)器以檢查要讀取多少字節(jié)。讀取每個字節(jié)時減少計數(shù)器
int numBytesToRead = (int)fileBytes.Length;

//計數(shù)器指示已讀取的字節(jié)數(shù)
int numBytesRead = 0;

//迭代直到從FileStream中讀取所有字節(jié)
while (numBytesToRead > 0)
{
    int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
        
    if (n == 0)
        break;

    numBytesRead += n;
    numBytesToRead -= n;
}

//從FileStream中讀取所有字節(jié)后,即可使用UTF8編碼將其轉(zhuǎn)換為字符串
string filestring = Encoding.UTF8.GetString(fileBytes);

如上面的代碼所示,您必須編寫許多代碼才能從FileSream讀取/寫入字符串。而使用 StreamReader 和 StreamWriter 可以輕松完成相同的讀/寫操作。

下面的示例顯示 StreamReader 如何使從文件中讀取字符串變得容易:

示例:使用 StreamReader 讀取文件

//為指定路徑創(chuàng)建FileInfo對象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//打開文件進行讀\寫
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read , FileShare.Read); 

//通過傳遞需要對其進行操作的FileStream對象來創(chuàng)建StreamReader的對象
StreamReader sr = new StreamReader(fs);

//使用ReadToEnd方法從文件讀取所有內(nèi)容
string fileContent = sr.ReadToEnd();

//操作后關(guān)閉StreamReader對象
sr.Close();
fs.Close();

注意,fi.Open() 它具有三個參數(shù):

  • 第一個參數(shù)是FileMode,用于創(chuàng)建和打開文件(如果文件不存在);

  • 第二個參數(shù) FileAccess 表示讀取操作;

  • 第三個參數(shù)是在打開文件時與其他用戶共享文件以供閱讀。

下面的示例顯示 StreamWriter 如何使將字符串寫入文件變得更容易:

示例:使用StreamWriter將文本寫入文件

//為指定路徑創(chuàng)建FileInfo對象            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//打開文件進行讀\寫
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read ); 

//創(chuàng)建StreamWriter對象以將字符串寫入FileSream
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Another line from streamwriter");
sw.Close();

不能同時對同一個 FileStream 對象執(zhí)行讀和寫操作。如果您已經(jīng)在讀取文件,請創(chuàng)建一個單獨的 FileStream 對象以寫入同一文件,如下所示:

示例:StreamReader和StreamWriter

//為DummyFile.txt創(chuàng)建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("Another line from streamwriter");
sw.Close();

//關(guān)閉所有Stream對象
fsToRead.Close();
fsToWrite.Close();

因此,您可以使用FileInfo,StreamReader 和  StreamWriter類從物理文件讀取/寫入內(nèi)容。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清