標籤:style blog color 檔案 io for cti 代碼
本篇主要介紹一些常用的IO操作,對檔案和目錄的操作;留給自己複習之用。
1.建立檔案 string sPath1=Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string sPath2="1.txt"; string fullPath=Path.Combine(sPath1,sPath2); //建立或覆蓋指定檔案,這個重載將建立一個0位元組的檔案 FileStream fsWrite= File.Create(fullPath); //建立或開啟檔案,寫入UTF8編碼的文本 StreamWriter sw = File.CreateText(fullPath); //建立或覆蓋指定檔案,這個重載需要提供讀取或寫入緩衝區中的位元組數 byte[] bteData=new byte[1024]; FileStream fsWrite= File.Create(fullPath,bteData.Length); //建立或覆蓋指定檔案,這個重載需要提供FileOptions的枚舉值 byte[] bteData=new byte[1024]; FileStream fsWrite= File.Create(fullPath,bteData.Length,FileOptions.None); //建立或覆蓋指定檔案,這個重載需要提供FileSecurity類型的執行個體(檔案安全性的指定) byte[] bteData=new byte[1024]; FileSecurity fsecurity = new FileSecurity("1.txt", AccessControlSections.Owner); FileStream fsWrite = File.Create(fullPath, bteData.Length, FileOptions.None, fsecurity); //建立或開啟一個檔案用於寫入 UTF-8 編碼的文本 StreamWriter sw = File.CreateText(fullPath); //將指定文本插入檔案中,如果檔案不存在則建立 File.WriteAllText(fullPath, "手動寫入的一段文本,哈哈哈哈"); //將指定文本插入檔案中,如果檔案不存在則建立(這個重載指定寫入編碼) File.WriteAllText(fullPath, "手動寫入的一段文本,哈哈哈哈",Encoding.Default); string[] str={"張三","李四","王五","趙六","田七"}; ///將指定文本插入檔案中,寫入指定字串數組,再關閉檔案(如果檔案中有內容,則會覆蓋) File.WriteAllLines(fullPath, str); //建立一個檔案,寫入指定位元組數組,再關閉檔案(如果檔案中有內容,則會覆蓋) string s = "手動寫入的一段文本,哈哈哈哈"; byte[] bte = Encoding.Default.GetBytes(s); File.WriteAllBytes(fullPath, bte); File.AppendAllText()//將string追加到檔案2.讀取檔案 //開啟一個檔案,讀取所有行,然後關閉 string sContent = File.ReadAllText(fullPath); //開啟一個檔案,讀取所有行,然後關閉(這個重載指定讀取編碼) string sContent = File.ReadAllText(fullPath, Encoding.UTF8); //開啟一個檔案,讀取所有行,然後關閉(傳回值為一個字串數組) string[] str = File.ReadAllLines(fullPath); //開啟一個檔案,讀取所有行,然後關閉(這個重載指定讀取編碼,傳回值為一個字串數組) string[] str = File.ReadAllLines(fullPath,Encoding.Default); foreach (string item in str) { Console.WriteLine(item); } //開啟一個檔案,讀取所有行,然後關閉(傳回值為一個位元組數組) byte[] bte = File.ReadAllBytes(fullPath); string s = Encoding.Default.GetString(bte);File.Copy(“source”, “targetFileName”, true);//檔案拷貝,true表示當檔案存在時“覆蓋”,如果不加true,則檔案存在報異常。File.Exists();//判斷檔案是否存在File.Move(“source”, “target”);//移動(剪下),檔案重新命名,檔案的剪下是可以跨磁碟的。File.Delete(“path”);//刪除。如果檔案不存在?不存在,不報錯3.檔案流FileStream fs=File.Open(); //返回FileStream FileStream fs=File.OpenRead();//返回唯讀FileStreamFileStream fs=File.OpenWrite();//返回唯寫的FileStreamFileStream fs=new FileStream(參數);4.目錄操作
1 //建立目錄 2 DirectoryInfo dInfo = Directory.CreateDirectory(@"D:\a\b"); 3 Console.WriteLine("檔案夾{0}的建立時間是:{1}",dInfo.Name,dInfo.CreationTime); //dInfo.CreationTimeUtc,返回目錄建立時間的UTC時間. 4 Directory.Move(@"D:\a\b", @"D:\1"); //將a下的b移入根目錄,並重新命名成1 5 Directory.Delete(@"D:\a", true); //刪除目錄,第二個參數設定為true,則表示刪除其子目錄 6 Directory.Exists(fullPath); //判斷目錄是否存在 7 Directory.GetFiles(fullPath); //檢索指定目錄下的子檔案 8 string[] strDir = Directory.GetDirectories(fullPath); //檢索指定目錄下的子目錄 9 Directory.GetDirectoryRoot(fullPath); //返回指定路徑的根目錄10 Directory.GetParent(sPath1); //返回指定路徑的父目錄11 string[] strDrives = Directory.GetLogicalDrives(); //檢索電腦上邏輯磁碟機的名稱12 DateTime LastTime = Directory.GetLastWriteTimeUtc(fullPath); //返回上次寫入指定目錄或檔案的日期和時間(UTC時間)13 DateTime Time1 = Directory.GetLastWriteTime(sPath1); //返回上次寫入指定目錄或檔案的日期和時間14 DateTime AccTime = Directory.GetLastAccessTime(sPath1); //返回上次訪問指定檔案和目錄的日期和時間15 DateTime utcTime = Directory.GetLastAccessTimeUtc(sPath1); //返回上次訪問指定檔案和目錄的日期和時間(UTC時間)16 string[] str = Directory.GetFileSystemEntries(@"D:\黑馬5期", "*.avi", SearchOption.AllDirectories); //擷取指定路徑中與搜尋模式比對的所有檔案名稱和目錄名稱的數組,還可以搜尋子目錄。17 string s1 = Directory.GetCurrentDirectory(); //應用程式的當前工作目錄18 string s2 = Assembly.GetExecutingAssembly().Location; //當前執行代碼的程式集的路徑(路徑中包含執行程式集exe的名稱)
需要注意的是,File.Delete(“path”)即便檔案不存在也不會拋異常;Directory.Delete(@"D:\a", true);當目錄不存在就會拋異常。