一、文件系統概述
計算機系統的重要作用之一是能快速處理大量信息,因此數據的組織和存取成為一個極為重要的內容。文件是信息的一種組織形式,而文件系統的的目標就是提高存儲器的利用率,接受用戶的委托實施對文件的操作。
文件系統是操作系統的一個重要組成部分。文件系統所要解決的問題包括:管理存儲設置,決定文件的存放位置和方式,提供共享能力,保證文件安全性,提供友好的用戶接口。通過文件系統,用戶和應用程序能方便地進行數據存儲,而不必關心底層存儲設備的實現。
Windows支持多種文件系統,如FAT,FAT32,NTFS等。這些文件系統在操作系統內部有不同的實現方式,然而它們提供給用戶的接口是一致的。如果應用程序不涉及到操作系統的具體特性,那麼只要按照標准式來編寫代碼,生成的應用程序就可以運行在各個文件系統上,甚至還可以不經改動移植到其他操作系統(比如Unix和Linux)上.Net框架中的IO處理部分就封裝了文件系統的實現細節,提供給開發人員一個標准化的接口。
Windows操作系統對文件系統采用多級目錄結構,並且提供了一組命令用於文件和目錄管理。可以使用.NET提供的標准方法進行目錄管理、文件控制和文件存取等工作,程序代友編譯執行時,.Net框架會自動調用相關的系統命令。
C#將文件視為一個字節序列,以流的方式對文件進行操作。流是字節序列的制作概念,文件、輸入/輸出設計、內部時行程序管道以及TCP/IP套接字等都可以視為一個流。.Net對流的概念進行了抽象,為這些不同類型的輸入和輸出提供了統一的視圖,使程序員不必去了解操作系統和基礎設備的具體細節。
二、目錄和文件
1. 相關枚舉類型
a) FileAccess,該枚舉類型表示文件的訪問權限,可以為以下值。
i. Read---對文件擁有讀權限
ii. ReadWrite---對文件擁有的讀寫權限
iii. Write---對文件擁有寫權限
b) FileAttributes,該枚舉類型表示文件的類型
i. Archive---存檔文件
ii. Compressed---壓縮文件
iii. Device---設備文件
iv. Directory---目錄
v. Encrypted---加密文件
vi. Hidden---隱藏文件
vii. Normal---普通文件
viii. NOtContentIndexd---無索引文件
ix. Offline---脫機文件
x. ReadOnly---只讀文件
xi. ReparsePoint---重分析文件
xii. SparseFile---稀疏文件
xiii. System---系統文件
xiv. Temporary---臨時文件
枚舉值可以按位進行組合使用,比如FileAttributes.System|FileAttributes.ReadOnly表示系統只讀文件。當然,一些相互排斥的類型是不能進行組合的,比如一個文件不能既是普通文件,又是隱藏文件。
c) FileMode,該枚舉類型表示文件的打開方式,可以為以下值:
i. Append---以追加的方式打開文件,如果文件存在則移動到文件末尾,否則創建一個新文件。
ii. Create---創建並打開一個文件,如果文件已經存在則覆蓋舊文件。
iii. Open---打開現有文件,如果文件不存在發生異常。
iv. OpenOrCreate---打開或新建一個文件,如果文件存在則打開它,否則創建並打開一個新文件。
v. Truncate---打開現有文件,並清空文件內容。
d) FileShare,該枚舉類型表示文件共享方式,可以為以下值。
i. None---禁止任何形式的共享。
iii. ReadWrite---讀寫共享,打開文件後允許其它進程對文件進行讀和寫操作。
iv. Write---寫共享,打開文件後允許其它進程對文件進行寫操作。
e) SeekOrigin,該枚舉類型表示文件的偏移以什麼為准,可以為以下值:
i. Begin---從文件起始位置計。
ii. Current---從文件流的當前位置計。
iii. End---從文件流的末尾位置計。
f) NotifyFilters,該枚舉類型用於指定對文件或目錄哪些屬性的修改進行監視,可以為以下值:
i. Attributes---對屬性的變化進行監視。
ii. CreationTime---對創建時間的變化進行監視。
iii. DirectoryName---對目錄名稱的變化進行監視。
iv. FileName---對文件名稱的變化進行監視。
v. LastAccess---對最後一次訪問時間的變化進行監視。
vi. LastWrite---對最後一次時間的變化進行監視。
vii. Security---對安全設置的變化進行監視。
viii. Size---對大小的變化進行監視。
2. 目錄
使用Directory類提供的目錄管理功能,不僅可以創建、移動和刪除目錄,還可以獲取和設置目錄的相關信息。
Directory提供的靜態方法有:
Ø Public static DirectoryInfo CreateDirectory(string)---給定路徑名,創建目錄,並返回目錄信息。
Ø Public static void Delete(string)---給定路徑名,刪除目錄。
Ø Public static void bool Exists(string)----給定路徑名,判斷目錄是否存在。
Ø Public static DateTime GetCreationTime(string)----給定路徑名,獲取目錄創建的日期和時間。
Ø Public static string GetCurrentDirectory()---獲取應用程序的當前工作目錄。
Ø Public static string[] GetDirectory(string)---給定路徑名,獲取目錄中的子目錄列表。
Ø Public static string GetDirectoryRoot(string)---給定路徑名,獲取目錄的卷信息或要信息。
Ø Public static string[] GetFile(string)---給定路徑名,獲取目錄中的文件列表。
Ø Public static string[] GetFileSystemEntrIEs(string)---給定路徑名,獲取目錄中的子目錄和文件列表。
Ø Public static DateTime GetLastAccessTime(string)---給定路徑名,獲取文件最近一次訪問的日期和時間。
Ø Public static DateTime GetlastWriteTime(string)---給定路徑名,獲得目錄最近一次修改的日期和時間。
Ø Public static string[] GetLogicalDrivers()---獲得計算機上的邏輯驅動器列表。
Ø Public static DirectoryInfo GetParent(string)---給定路徑名,獲取目錄上層目錄的信息。
Ø Public static void Move(string,string)---給定源路徑名和目標路徑名,移動目錄。
Ø Public static void SetCreationTime(string,DateTime)---給定路徑名,設置目錄創建的日期和時間。
Ø Public static void SetCreationDirectory(string)---給定路徑名,將目錄設置為應用程序的當前工作目錄。
Ø Public static void SetLastAccessTime(string,DateTime)---給定路徑名,設置目錄最近一次被訪問的日期和時間。
Ø Public static void SetLastWriteTime(string,DateTime)---給定路徑名,設置目錄最近一次被修改的日期和時間。
3. 文件
a) 文件基本操作
Ø Public static FileStream Create(string)---給定文件路徑名,創建文件,並返回一個FileStream流對象。
Ø Public static StreamWriter CreateText(string)---給定文件路徑名,以文本的方式創建文件,並返回一個StreamWriter流對象。
Ø Public static void Copy(string,string)---給定源路徑名和目錄路徑名,考貝文件。
Ø Public static void Move(string,string)---給定源路徑名和目錄路徑名,移支文件。
Ø Public static void Delete(string)---給定源路徑名和目錄路徑名,刪除文件。
Ø Public static void Exists(string)---給定源路徑名和目錄路徑名,判斷文件是否存在。
b)獲取和設置文件信息
Ø Public static FileAttributes GetAttributes(string)------給定源路徑名,獲取文件的屬性集。
Ø Public static DateTime GetCreationTime(string)---給定文件路徑名,獲取文件創建賓日期和時間。
Ø Public static DateTime GetLastAccessTime(string)---給定文件路徑名,獲得文件最近一次被訪問的日期和時間。
Ø Public static DateTime GetLastWriteTime(string)---給定文件路徑名,獲得文件最近一次被修改的日期和時間。
Ø Public static void SetAttributes(string,FileAttributes)---給定文件路徑名,設置文件屬性集。
Ø Public static void SetCreationTime(string,DateTime)---給定文件路徑名,設置文件創建的日期和時間。
Ø Public static void SetLastAccessTime(string,DateTime)----給定文件路徑名,設置文件最近一次被訪問的日期和時間。
Ø Public static void SetLastWriteTime(string,DateTime)---給定文件路徑名,設置文件最後一次被修改的日期和時間。
c)打開文件,並將文件與流對象相關聯
Ø Public static FileStream Open(string,FileMode)---給定文件路徑名,按指定的方式打開文件,並返回一個FileStream流對象。
Ø Public static FileStream OpenRead(string)---給定文件路徑名,以只讀方式打開文件,並返回一個FileStream流對象。
Ø Public static FileStream OpenWrite(string)---給定文件路徑名,打開文件進行讀寫操作,並返回一個FileStream流對象。
Ø Public static StreamReader OpenText(string)---給定文件路徑名,以文本方式打開文件並返回一個FileStream流對象。
Ø Public static StreamWriter AppendText(string)---給定文件路徑名,以文本方式打開文件進行寫操作,並返回一個StreamWriter流對象。