1、File類的概念:
File類,是一個靜態類,主要是來提供一些函數庫用的。靜態實用類,提供了很多靜態的方法,支持對文件的基本操作,包括創建,拷貝,移動,刪除和 打開一個文件。
File類方法的參量很多時候都是路徑path。File的一些方法可以返回FileStream和StreamWriter的對象。可以 和他們配套使用。System.IO.File類和System.IO.FileInfo類
主要提供有關文件的各種操作,在使用時需要引用System.IO命名空間。
一、File類常用的操作方法
1、創建文件方法
//參數1:要創建的文件路徑
File.Create(@"D:\Test\Debug1\測試.txt")
2、打開文件方法
//參數1:要打開的文件路徑,參數2:打開的文件方式
File.Open(@"D:\Test\Debug1\測試.txt",FileMode.Append)
3、追加文件方法
//參數1:要追加的文件路徑,參數2:追加的內容
File.AppendAllText(@"D:\Test\Debug1\測試.txt","哈哈");
4、復制文件方法
//參數1:要復制的源文件路徑,參數2:復制后的目標文件路徑,參數3:是否覆蓋相同文件名
File.Copy(@"D:\Test\Debug1\測試.txt", @"D:\Test\Debug2\測試1.txt", true);
5、移動文件方法
//參數1:要移動的源文件路徑,參數2:移動后的目標文件路徑
File.Move(@"D:\Test\Debug1\測試.txt", @"D:\Test\Debug3\測試2.txt");
6、刪除文件方法
//參數1:要刪除的文件路徑
File.Delete(@"D:\Test\Debug1\測試.txt");
7、設置文件屬性方法
//參數1:要設置屬性的文件路徑,參數2:設置的屬性類型(只讀、隱藏等)
File.SetAttributes(@"D:\Test\Debug1\測試.txt", FileAttributes.Hidden);
8、 判斷文件是否存在的方法:File.Exist
public static bool Exists(string path);
9、使用File類讀取數據
1 /// <summary> 2 /// 使用File類讀取數據 3 /// </summary> 4 /// <param name="path">要讀取文件的路徑</param> 5 /// <returns>返回讀取的TXT文件的字符串</returns> 6 public static string GetString(string path) 7 { 8 byte [] buffer= File.ReadAllBytes(path); 9 string str = Encoding.UTF8.GetString(buffer, 0, buffer.Length); 10 return str; 11 }
10、使用File類寫入數據
1 /// <summary> 2 /// 使用file類寫入數據 3 /// </summary> 4 /// <param name="path">要寫入文件的路徑</param> 5 /// <param name="str">要寫入的字符串</param> 6 public static void write(string path,string str) 7 { 8 byte[] buffer = Encoding.UTF8.GetBytes(str); 9 File.WriteAllBytes(path,buffer); 10 11 }
此外,File類對於Text文本提供了更多的支持。
· AppendText:將文本追加到現有文件
· CreateText:為寫入文本創建或打開新文件
· OpenText:打開現有文本文件以進行讀取
二、streamRead與streamWrite
1、概念:
2、使用streamWrite寫入數據
/// <summary> /// 要寫入文件的路徑 /// </summary> /// <param name="path"></param> public static void Write(string path,string str) { using (StreamWriter sw = new StreamWriter(path)) { sw.Write(str); } }
3、使用streamRead讀取數據
1 /// <summary> 2 /// 要讀取文件的路徑 3 /// </summary> 4 /// <param name="path"></param> 5 /// <returns></returns> 6 public static string Read(string path) 7 { 8 StringBuilder sb = new StringBuilder(); 9 using (StreamReader sr = new StreamReader(path,Encoding.UTF8)) 10 { 11 while(!sr.EndOfStream) 12 { 13 sb.Append(sr.ReadLine()); 14 } 15 return sb.ToString(); 16 } 17 }
三、對文件路徑操作的Path類
1、概念:
對包含文件或目錄路徑信息的 String 實例執行操作。 這些操作是以跨平台的方式執行的。
路徑是提供文件或目錄位置的字符串。
路徑可以包含絕對或相對位置信息。
若要確定當前目錄,請調用 Directory.GetCurrentDirectory。
Path 類的所有成員都是靜態的,因此無需具有路徑的實例即可被調用。
常用方法:
Path.GetFullPath 方法
返回指定路徑字符串的絕對路徑
——語法:
public static string GetFullPath(
string path
)
——參數
path
類型:System.String
要為其獲取絕對路徑信息的文件或目錄。
——返回值
類型:System.String
path 的完全限定的位置,例如“C:\MyFile.txt”。
備注:path 指定的文件或目錄不需要存在。 例如,如果 c:\temp\newdir 是當前目錄,則對文件名(例如 test.txt)調用 GetFullPath 將返回 c:\temp\newdir\test.txt。 該文件不需要存在。
Path.GetFileName 方法
返回指定路徑字符串的文件名和擴展名。
與GetFullPath 方法 進行逆操作
Path.GetDirectoryName 方法
返回指定路徑字符串的目錄信息。
——語法:
public static string GetDirectoryName(
string path
)
——參數
path
類型:System.String
文件或目錄的路徑。
——返回值
類型:System.String
path 的目錄信息,如果 path 表示根目錄或為 null,則該目錄信息為 null。 如果 path 沒有包含目錄信息,則返回 String.Empty。
——備注:
由於返回的路徑不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar,因此將返回的路徑傳回 GetDirectoryName 方法會導致隨后每次調用得到的字符串時截斷一個文件夾級別。 例如,將路徑“C:\Directory\SubDirectory\test.txt”傳入 GetDirectoryName 方法將返回“C:\Directory\SubDirectory”。 將該字符串“C:\Directory\SubDirectory”傳入 GetDirectoryName 將導致返回“C:\Directory”。
Path.Combine 方法 (String, String)
將兩個字符串組合成一個路徑。返回字符串。
最多支持四個路徑的組合
/* 1.更改路徑字符串的擴展名 public static string ChangeExtension(string path,string extension) 參數: path(String):要修改的路徑信息. extension(String):新的擴展名。 返回值: String,修改后的路徑字符串。*/ //如果 extension 是 null,則返回的字符串包含指定的路徑,其擴展名已移除(點還在)。 string s1 = Path.ChangeExtension(@"D:\wang1\wang.txt", "");//返回D:\wang1\wang. Console.WriteLine(s1); //如果 path 不具有擴展名,並且 extension 不是 null,則返回的路徑字符串包含 extension,它追加到 path 的結尾。 string s2 = Path.ChangeExtension(@"D:\wang1\wang", ".dll");//返回D:\wang1\wang.dll Console.WriteLine(s2); //僅更改路徑字符串中的擴展名,並不會改變實際文件的擴展名或者目錄。 /* 2. 合並兩個字符路徑字符串 public static string Combine(string path1,string path2) 參數: path1(String) ,第一個路徑 path2(String), 第二個路徑 返回值: String ,合並后的路徑字符串。 常見的合並操作為: */ string path3 = @"c:\目錄"; string path4 = @"install.txt"; string s5 = Path.Combine(path3, path4); Console.WriteLine(s5); //返回:"c:\目錄\install.txt" /* 3.獲取指定路徑字符串的目錄信息 public static string GetDirectoryName(string path) */ Console.WriteLine(Path.GetDirectoryName(@"d:\wang3\wang\wang.text"));//返回文件的目錄名 //4.獲取指定路徑字符串的擴展名 Console.WriteLine(Path.GetExtension(@"d:\wang\wang.txt"));
四、Directory 類
公開用於創建、移動和枚舉通過目錄和子目錄的靜態方法。無法繼承此類。
——備注
--------------------------------------------------------------------------------
將 Directory 類用於典型操作,如復制、移動、重命名、創建和刪除目錄。也可將 Directory 類用於獲取和設置與目錄的創建、訪問及寫入操作相關的 DateTime 信息。
由於所有的 Directory 方法都是靜態的,所以如果只想執行一個操作,那么使用 Directory 方法的效率比使用相應的 DirectoryInfo 實例方法可能更高。大多數 Directory 方法要求當前操作的目錄的路徑。
Directory 類的靜態方法對所有方法都執行安全檢查。如果打算多次重用某個對象,可考慮改用 DirectoryInfo 的相應實例方法,因為並不總是需要安全檢查。
常用方法:
Directory.GetFiles 方法 (String)
返回指定目錄中的文件的名稱。
命名空間:System.IO
——語法:
public static string[] GetFiles (
string path
)
——參數
path
將從其檢索文件的目錄。
——返回值
指定目錄中文件名的 String 數組。文件名包含完整路徑。
——備注:
文件名包含完整路徑。
此方法與將星號 (*) 指定為搜索模式的 GetFiles 方法相同。
允許 path 參數指定相對或絕對路徑信息。相對路徑信息被解釋為相對於當前工作目錄。若要獲取當前工作目錄,請參見 GetCurrentDirectory。
path 參數不區分大小寫。
Directory.GetFiles 方法 (String, String) //重載的
返回指定目錄中與指定搜索模式匹配的文件的名稱。
——語法:
public static string[] GetFiles (
string path,
string searchPattern
)
——參數
path
要搜索的目錄。
searchPattern
要與 path 中的文件名匹配的搜索字符串。此參數不能以兩個句點(“..”)結束,不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含兩個句點(“..”),也不能包含 InvalidPathChars 中的任何字符。
——返回值
一個 String 數組,它包含指定目錄中與指定搜索模式匹配的文件的名稱。文件名包含完整路徑。
——備注:
文件名包含完整路徑。
在 searchPattern 中允許使用以下通配說明符。
通配符
*
零個或多個字符。
?
正好一個字符。
通配說明符以外的字符表示它們自己。例如,searchPattern 字符串“*t”搜索 path 中所有以字母“t”結尾的名稱。searchPattern 字符串“s*”搜索 path 中所有以字母“s”開頭的名稱。
其它常用 Directory 成員
——公共方法:
CreateDirectory 已重載。 創建指定路徑中的所有目錄。
Delete 已重載。 刪除指定的目錄。
Equals 已重載。 確定兩個 Object 實例是否相等。 (從 Object 繼承。)
GetCreationTime 獲取目錄的創建日期和時間。
GetCurrentDirectory 獲取應用程序的當前工作目錄。
GetDirectories 已重載。 獲取指定目錄中子目錄的名稱。
GetFileSystemEntries 已重載。 返回指定目錄中所有文件和子目錄的名稱。
GetParent 檢索指定路徑的父目錄,包括絕對路徑和相對路徑。
GetType 獲取當前實例的 Type。 (從 Object 繼承。)
Move 將文件或目錄及其內容移到新位置。
ToString 返回表示當前 Object 的 String。 (從 Object 繼承。)
=========================================================================
以下代碼段是本人的一點實踐,
檢索某文件夾下所有包含檢索關鍵字的文件,打印到屏幕:
class Program { static void Main(string[] args) { //檢索某文件夾下所有包含檢索關鍵字的文件,打印到屏幕 #region test // Directory //string path = Path.GetFullPath("1.txt"); //Console.WriteLine(path); //string tem=Path.GetFileName(path); //Console.WriteLine(tem); //Console.ReadKey(); #endregion string path = (@"F:\pdf"); //要找的目錄 string reg = @".*美.*\..*"; //正則表達式 //string reg = @".+美.+\..+"; string[] filename = Directory.GetFiles(path);//Directory 從磁盤讀取文件名存入字符串數組 // MatchCollection mc=null; for (int i = 0; i < filename.Length; i++) { string temp = Path.GetFileName(filename[i]); //把文件的完整路徑轉換成 文件名.擴展名 形式 MatchCollection mc = Regex.Matches(temp, reg); //正則表達式進行匹配, //if (mc != null) //mc 始終不為null,所以始終打印 //{ // Console.WriteLine(filename[i]); //} foreach (Match t in mc) { Console.WriteLine(filename[i]);//打印結果,完整路徑 Console.WriteLine(t); //打印結果,文件名.擴展名 形式 } //for ( i = 0; i < mc.Count ; i++) //{ // Console.WriteLine(filename[i]); //} } Console.ReadKey(); } }