談一談C#中File類和FileInfo類的區別
阿新 • • 發佈:2019-02-02
File類是一個靜態類,優點:呼叫簡單;缺點:始終消耗CPU資源。
FileInfo類是一個例項類,優點:呼叫完就釋放CPU資源;缺點:操作複雜
這裡用一個讀取一篇文章幷包含空格,處理空格後,再寫回去的操作來演示兩者是如何對檔案進行操作的。
File類:
//File類 這其實跟StreamReader和StreamWriter類似,操作的都是字元資料 //當然File也能通過字元來操作資料,只是一般不這麼做 string[] lines = File.ReadAllLines(@"E:\Users\hxxx\Desktop\test.txt", Encoding.Default); for (int i = 0; i < lines.Length; i++) { lines[i] = lines[i].Replace(" ", ""); Console.WriteLine(lines[i]); } File.WriteAllLines(@"E:\Users\hw\Desktop\test.txt", lines, Encoding.UTF8); Console.ReadKey();
FileInfo類:
//FileInfo類 其實跟FileStream類似,只有三個例項類OpenRead, OpenText, OpenWrite 都是一個意思 //區別在於OpenRead 返回的是FileStream OpenText返回的是StreamRead OpenWrite返回的是FileStream //可見FileInfo也可以操作字元資料 FileInfo fi = new FileInfo("test.txt"); string contents = string.Empty; using (FileStream fsRead = fi.OpenRead()) { byte[] buffer = new byte[1024 * 1024 * 2]; int r = fsRead.Read(buffer, 0, buffer.Length); contents = Encoding.UTF8.GetString(buffer, 0, r); contents = contents.Replace(" ", ""); string[] str = contents.Split('\n'); } using (StreamWriter sw = fi.CreateText()) //這裡無法用位元組存進去因為容易出現亂碼,下次深入討論這個問題 { sw.Write(contents); }