System.IO命名空間底下的Directory、DirectoryInfo、File、FileInfo、Path類別
System.IO核心提供了Directory、DirectoryInfo、File、FileInfo、Path類別可用,
其中更關注的是Directory、File、Path靜態類別,
而DirectoryInfo跟Directory的差別是,
DirectoryInfo須建立物件實體來操作,
而Directory是靜態類別則不需建立實體,
File跟FileInfo的關係也相當於Directory跟DirectoryInfo。
一、Directory類別為負責資料夾的新增、修改、刪除、查詢功能
1、新增一目錄:
Directory.CreateDirectory("c:\\aaa");
2、修改目錄名稱
則須利用Directory.Move(sourceDirName,destDirName)
Directory.Move("c:\\aaa", "c:\\bbb");
須注意在Move前目的資料夾不能預先被創立。
雖然Move在字義上為移動,但是其效果就是修改目錄名稱。
3、刪除目錄
Directory.Delete("c:\\bbb");
使用該指令需先注意該目錄為空目錄,否則會出錯,
如果要刪除該目錄底下所有檔案則使用
Directory.Delete("c:\\bbb",true);
4、各種取得資訊方法
(1)、回傳應用程式的絕對路徑
string GetCurrentDirectory = Directory.GetCurrentDirectory();
GetCurrentDirectory字串為C:\Users\tubex\Desktop\Directory的操作\Directory的操作\bin\Debug
(2)、判斷該目錄是否存在
Boolean Exists = Directory.Exists("c:\\aaa");
如果aaa目錄存在則為true
(3)、只列出該目錄底下一層有幾個子目錄
string[] GetDirectories= Directory.GetDirectories("c:\\aaa");
(4)、只列出該目錄底下一層有幾個檔案
string[] GetFiles = Directory.GetFiles("c:\\aaa");
(5)、只列出該目錄底下一層有幾個子目錄與檔案
string[] GetFileSystemEntries = Directory.GetFileSystemEntries("c:\\aaa");
二、File類別也是負責新增、修改、刪除、查詢功能
1、新增檔案
File.Create("c:\\aaa\\aaa.txt");
此指令會創立一個空白文檔
記得要Dispose
File.Create("c:\\aaa\\aaa.txt").Dispose();
2、修改檔案
File.Move("c:\\aaa\\aaa.txt", "c:\\bbb\\bbb.txt");
將aaa.txt檔案搬到bbb資料夾,並且改成bbb.txt檔名。
注意:目的資料夾在Move前必須已存在。
3、刪除檔案
File.Delete("c:\\aaa\\aaa.txt");
此指令會刪除一檔案
4、各種取得資訊方法
(1)、判斷檔案是否存在
Boolean Exists = File.Exists("c:\\aaa\\aaa.txt");
如果該檔案存在則為true。
5、其他功能
範例一、將字串寫入檔案
File.WriteAllText(@"outputFile.txt", "寫入字串");
範例二、將字串寫入檔案
FileInfo f = new FileInfo("input.txt");
StreamWriter sw = f.CreateText();//如果檔案已存在,則新寫入資料會覆蓋原有的資料
sw.WriteLine("資料寫入");
sw.Close();
範例三、將字串集合寫入檔案
string[] lines = { "First line", "Second line", "Third line" };
await File.WriteAllLinesAsync("WriteLines.txt", lines);
範例四、將文字附加至現有的檔案
using StreamWriter file = new("WriteLines2.txt", append: true);
await file.WriteLineAsync("Fourth line");
範例五、讀取文字檔
string[] sStrings = File.ReadAllLines(@"inputFile.txt");
還有其他功能,如 AppendText、Copy、Open、OpenRead、OpenText、OpenWirte、ReadLines、ReadAllText、Replace、WriteLines...等等。
三、Path
1、ChangeExtension
string ChangeExtension = Path.ChangeExtension("c:\\aaa\\aaa.txt",".doc");
此功能為把該路徑的附檔名改成doc檔,所以回傳字串為c:\\aaa\\aaa.doc
注意:Path類別只是在操作字串而已,並不會真的去改到實際檔名。
2、Combine
string Combine = Path.Combine("C:\\aaa", "bbb.txt");
則輸出字串為C:\aaa\bbb.txt,combine會幫你在兩字串間加上反斜線「\」
3、GetDirectoryName
string GetDirectoryName = Path.GetDirectoryName("c:\\aaa\\aaa.txt");
取得該位置上層絕對路徑,回傳字串為c:\aaa
4、其他
GetExtention傳回指定路徑字串的副檔名
GetFileName傳回指定路徑字串的檔案名稱和副檔名
GetFileNameWithoutExtension傳回沒有副檔名的指定路徑字串的檔案名稱
GetFullPath傳回指定路徑字串的絕對路徑
HasExtension判斷路徑是否包括副檔名
參考資料: