文件和I/O流的差異:
因此對于文件,我們經常想到文件夾路徑,磁盤存儲,文件和文件夾名等方面。
I/O流提供一種后備存儲寫入字節和從后備存儲讀取字節的方式。
后備存儲能夠為多種存儲媒介之中的一個。
System.IO命名空間中的經常使用類:
BinaryWriter ? ? 以二進制形式將基元類型寫入流,并支持用特定的編碼寫入字符串
Directory ? ? ? ?公開用于創建、移動和枚舉通過文件夾和子文件夾的靜態方法,無法被繼 ? ? ? ? ? ? ? ? ?承
DirectoryInfo ? ?公開用于創建、移動和枚舉文件夾和子文件夾的實例方法,無法被繼承
File ? ? ? ? ? ? 提供創建、復制、刪除、移動和打開文件的靜態方法,協助創建 ? ? ? ? ? ? ? ? ? ? ?FileStream對象
FileInfo ? ? ? ? 提供創建、復制、刪除、移動和打開文件的實例方法,而且幫助創建 ? ? ? ? ? ? ? ? ?FileStream對象
FileStream ? ? ? 公開以文件為主的Stream,既支持同步讀寫操作,也支持異步讀寫操 ? ? ? ? ? ? ? ? ?作
FileSystemInfo ? 為FileInfo和DirectoryInfo對象提供基類
StreamReader ? ? 實現一個TextReader,使其以一種特定的編碼從字節流中讀取字符
StreamWriter ? ? 實現一個TextWriter,使其以一種特定的編碼向流中寫入字符
Copy ? ? ? ? ? ? ? ? ?將現有文件拷貝到新文件
Create ? ? ? ? ? ? ? ?在指定路徑中創建文件Delete ? ? ? ? ? ? ? ?刪除指定的文件,假設指定的文件不存在,則不引起異常
Exists ? ? ? ? ? ? ? ?確定指定的文件是否存在
Move ? ? ? ? ? ? ? ? ?將指定文件移到新位置,并提供指定新文件名稱的選項
Open ? ? ? ? ? ? ? ? ?打開指定路徑上的FileStream
GetCreationTime ? ? ? 返回指定文件或文件夾的創建日期和時間
OpenRead ? ? ? ? ? ? ?打開現有文件進行讀取
OpenText ? ? ? ? ? ? ?打開現有UTF-8編碼文本文件以進行讀取
OpenWrite ? ? ? ? ? ? 打開現有文件進行寫入
2.FileInfo類:
Directory ? ? ? 獲取父文件夾的實例
Exists ? ? ? ? ?獲取指示文件是否存在的值
FullName ? ? ? ?獲取文件夾或文件的完整文件夾
Length ? ? ? ? ?獲取當前文件的大小
Name ? ? ? ? ? ?獲取文件名稱
3.File類和FileInfo類的基本操作方法
注意:
因為File類中的全部方法都是靜態的,所以假設僅僅想運行一個操作,那么使用File類中方法的效率比使用對應的FileInfo類中的方法可能更高
File類中的方法都是靜態方法,在使用時須要對全部方法都運行安全檢查。因此假設打算多次重用某個對象,可考慮改用FileInfo類中的對應方法,由于不總是須要安全檢查。
(1)推斷文件是否存在Exists方法
返回bool型,假設path為空或者沒有權限,則返回false
File:推斷C盤根文件夾下有沒有test.txt文件:
File.Exists("C:\\test.txt")
FileInfo:
FileInfo fileinfo = new FileInfo("C:\\test.txt")
if(fileinfo.Exists){}
File類的Create方法有4中重載方法:
public static FileStream Create(string path)
public static FileStream Create(string path,int bufferSize)
public static FileStream Create(string path,int bufferSize,FileOptions options)
public static FileStream Create(string path,int bufferSize,FileOptions options,FileSecurity fileSecurity)
File類Create方法參數說明
path ? ? ? ? ? ? ? 文件名稱
bufferSize ? ? ? ? 用于讀取和寫入文件的已放入緩沖區的字節數
options ? ? ? ? ? ?FileOptions值之中的一個,它描寫敘述怎樣創建或改寫該文件
fileSecurity ? ? ? FileSecurity值之中的一個,它確定文件的訪問控制和審核安全性
File類:
File.Create("C:\\test.txt")
FileInfo類:
FileInfo fileinfo = new FileInfo("C:\\test.txt")
fileinfo.Create();
(3)拷貝文件用File類的Copy方法以及FileInfo類的CopyTo方法
File類的Copy方法或者FileInfo類的CopyTo方法
File類的Copy方法有兩種重載方式
public static void Copy(string sourceFileName,string destFileName)
public static void Copy(string sourceFileName,string destFileName,bool overwrite)
sourceFileName表示要復制的文件,destFileName表示目標文件的名稱,不能是文件夾,假設是第一種重載,則目標文件參數不能是現有文件。
overwrite表示能否夠改寫目標文件
將C盤根文件夾下的test.txt文本文件拷貝到D盤根文件夾下:
(這邊注意措辭,說明D盤根文件夾下是沒有test.txt文件的)
File.Copy("C:\\test.txt","D:\\test.txt")
FileInfo類的CopyTo方法也有兩種重載方式
public FileInfo CopyTo(string destFileName)
public FileInfo CopyTo(string destFileName,bool overwrite)
FileInfo fileinfo = new FileInfo("C:\\test.txt");
fileinfo.CopyTo("D:\\test.txt",true);
(4)移動文件用File類的Move方法和FileInfo類的MoveTo方法
File類-Move方法-
public static?void?Move(string sourceFileName,string destFileName)
File.Move("C:\\test.txt","D:\\test.txt")
FileInfo類-MoveTo方法-publicvoid?MoveTo(string destFileName)
FileInfo fileinfo = new FileInfo("C:\\test.txt");
fileinfo.MoveTo("D:\\test.txt");
(5)刪除文件用Delete方法
File類-Delete方法-public staticvoid?Delete(string path)
File.Delete("C:\\test.txt")
FileInfo類-Delete方法-publicvoid?Delete(string path)
FileInfo fileinfo = new FileInfo("C:\\test.txt");
fileinfo.Delete("D:\\test.txt");