C#快速入門教程(24)—— 路徑、目錄與檔案
本課的主題,路徑(Path)、目錄(Directory)和檔案(File),在.NET Framework類庫中,它們的處理資源定義在System.IO名稱空間,程式碼檔案中注意引用。
路徑
定義目錄和檔案的位置時,路徑的處理是很重要的,在C#中,可以使用字串定義路徑,但需要注意“\”等特殊字元的處理,可以使用轉義字元或逐字字串(使用@字元定義),如"C:\test.txt"或@"C:\test.txt"都指向C盤下的test.txt檔案。
當有了一個描述字串的路徑後,就可以使用Path類進一步的處理,如下面的程式碼測試了Path類中的幾個方法。
static void Main(string[] args)
{
string p = @"C:\test.txt";
Console.WriteLine(Path.GetFileName(p));
Console.WriteLine(Path.GetFileNameWithoutExtension(p));
Console.WriteLine(Path.HasExtension(p));
Console.WriteLine(Path.GetExtension(p));
Console.WriteLine(Path.GetDirectoryName(p));
}
程式碼執行結果如下圖所示。
本例中,我們使用了Path類中的幾個靜態方法,它們是:
- GetFileName()方法,獲取檔名。
- GetFileNameWithoutExtension()方法,獲取檔名,但不包括副檔名。
- HasExtension()方法,判斷是否有副檔名。
- GetExtension()方法,返回副檔名。
- GetDirectoryName()方法,返回路徑中所包含的目錄名稱。
目錄
處理目錄時,可以關注Directory類和DirectoryInfo類,它們區別在於,Directory類主要定義了一些靜態方法,而DirectoryInfo類則需要例項化以後使用;如下面的程式碼,分別使用Directory類和DirectoryInfo類判斷C:\temp目錄是否存在。
static void Main(string[] args)
{
string p = @"C:\temp";
//
Console.WriteLine(Directory.Exists(p));
//
DirectoryInfo dir = new DirectoryInfo(p);
Console.WriteLine(dir.Exists);
}
如果C:\temp目錄存在,會顯示兩處True,否則顯示兩個False。通過本例,大家應該可以看到使用Directory類和DirectoryInfo類的區別;實際應用中,一些基本的操作,使用Directory類的靜態方法的程式碼更少。
下面,我再瞭解一些Directory類中常用的方法,如:
- GetDirectories()方法,返回子目錄列表,返回型別為string[],即字串陣列型別。
- GetFiles()方法,返回目錄中中的檔案列表,返回型別同樣為string[]。
- CreateDirectory()方法,建立目錄。
- Delete()方法,刪除目錄。
- Move()方法,移動目錄或修改目錄名稱。
DirectoryInfo類也包含類似的例項方法,但有些也會稍有區別,如Move()方法的功能在DirectoryInfo類使用MoveTo()方法;下面的程式碼,用於返回目錄名稱。
static void Main(string[] args)
{
string p = @"C:\temp";
DirectoryInfo dir = new DirectoryInfo(p);
Console.WriteLine(dir.FullName);
Console.WriteLine(dir.Name);
}
本例中,使用FullName屬性獲取目錄的完成路徑,而Name屬性獲取不包含路徑的目錄名稱,程式碼執行結果如下圖所示。
檔案
這裡,我們主要了解一下File類和FileInfo類,相信大家也能猜出來了,它們與Directory和DirectoryInfo類的關係差不多,File類定義了一系列檔案操作的靜態成員,而FileInfo類則用於操作具體檔案的例項(物件)。
接下來,我們看一下文字檔案的快速操作方法。下面的程式碼,會將一些文字內容寫到C:\test.txt檔案,然後讀取並顯示。
static void Main(string[] args)
{
string p = @"D:\test.txt";
//
string[] contents = { "第一行","第二行","line 3","line 4"};
File.WriteAllLines(p, contents);
//
string[] ss = File.ReadAllLines(p);
foreach(string s in ss)
{
Console.WriteLine(s);
}
}
程式碼執行結果如下圖所示。
除了讀寫多行文字的方法,File類中還有一些常用的檔案操方法可以使用,如ReadAllText()和WriteAllText()方法還可以讀寫檔案的全部文字內容,ReadAllBytes()和WriteAllBytes()方法可以讀寫檔案的全部位元組;此外,System.IO名稱空間中定義了大量的檔案操作資源,如檔案屬性、檔案位元組操作等,大家可以參考MSDN文件使用。
CHY軟體小屋原創作品!
相關文章
- 《C#快速入門教程》目錄C#
- 【Linux入門教程】1 簡介、檔案管理、目錄Linux
- python基本操作-檔案、目錄及路徑Python
- C#快速入門教程(25)—— 日期與時間C#
- python獲取指定目錄所有檔案絕對路徑Python
- C#快速入門教程(16)—— 介面C#
- C#快速入門教程(6)——方法C#
- C#快速入門教程(19)—— 索引器與陣列C#索引陣列
- C#快速入門教程(5)——欄位與屬性C#
- C#快速入門教程(2)——程式碼與測試C#
- Linux 檔案與目錄Linux
- C#快速入門教程(20)—— 字串與正規表示式C#字串
- C#快速入門教程(26)—— 繪圖C#繪圖
- C#快速入門教程(21)—— 泛型C#泛型
- C#快速入門教程(15)—— 繼承C#繼承
- C#快速入門教程(8)——整數C#
- 快速理解Android檔案儲存路徑Android
- C#常見的檔案路徑ApiC#API
- C#快速入門教程(17)—— 委託、事件與Lambda表示式C#事件
- C#快速入門教程(28)—— ADO.NETC#
- maven工作目錄、編譯後的目錄說明及mybatis-plus的xml檔案路徑配置Maven編譯MyBatisXML
- linux檔案與目錄管理命令Linux
- Linux檔案與目錄管理(2)Linux
- win10怎麼獲取當前目錄_win10系統如何快速獲取檔案路徑Win10
- C#快速入門教程(22)—— 常用集合型別C#型別
- C#快速入門教程(30)—— 繼續學習C#
- C#快速入門教程(18)—— 異常處理C#
- C#快速入門教程(12)—— if語句結構C#
- import匯入檔案路徑注意點Import
- QT 檔案相對路徑載入QT
- C#快速入門教程(10)——布林型別與布林運算C#型別
- CentOS 個人目錄下中文路徑轉英文路徑CentOS
- C#快速入門教程(27)—— SQL Server資料庫C#SQLServer資料庫
- C#快速入門教程(11)—— 字元和字串型別C#字元字串型別
- C#快速入門教程(13)—— switch語句結構C#
- C#快速入門教程(7)——資料型別概述C#資料型別
- git 入門教程之忽略檔案Git
- Linux中檔案與目錄的區別Linux