C#基础篇--文件(流)
生活随笔
收集整理的這篇文章主要介紹了
C#基础篇--文件(流)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:Path類是專門用來操作文件路徑的(Path類是靜態類):當然用字符串的處理辦法也能實現。? string str = @"C:\Users\成才\Desktop\Hashtable.txt"; ? ? ? ? ? ? //返回文件名 ? ? ? ? ? ? Console.WriteLine(Path.GetFileName(str)); ? ? ? ? ? ? //返回文件名,但不包括擴展名 ? ? ? ? ? ? Console.WriteLine( Path.GetFileNameWithoutExtension(str)); ? ? ? ? ? ? //返回文件所在的文件夾名 ? ? ? ? ? ? Console.WriteLine(Path.GetDirectoryName(str)); ? ? ? ? ? ? //返回文件的擴展名 ? ? ? ? ? ? Console.WriteLine(Path.GetExtension(str)); ? ? ? ? ? ? //連接兩個字符串作路徑 ? ? ? ? ? ? Console.WriteLine(Path.Combine(@"C:\a\","b.txt")); ? ? ? ? 2:File這個靜態類是用來處理文件的(創建、刪除、復制等)? File.Create(@"C:\a\b\d.txt"); File.Delete(@"C:\a\b\d.txt"); File.Cope(@"C:\a\b\d.txt"); ? 編碼:將字符串以怎樣的格式保存為二進制。 亂碼:產生亂碼的原因就是你保存這個文件所采用的編碼格式和你打開這個文件所采用的編碼格式不一樣。 文本文件:拖到txt文件中還能看懂的文件就是文本文件。 ? 3:讀取文本文件: //以UTF-8的編碼格式讀取1.txt這個文件 byte[] buffer= File.ReadAllBytes(@"C:\Users\成才\Desktop\1.txt"); string str=Encoding.GetEncoding("UTF-8").GetString(buffer); Console.WriteLine(str); Console.ReadKey(); ? 4:向指定的路徑寫入文件: //以默認的格式(ANSI)寫入文件。 string str="我們都有一個家,名字叫中國!!!!"; byte[] buffer=Encoding.Default.GetBytes(buffer); File.WriteAllBytes(@"C:\Users\成才\Desktop\2.txt",buffer); Console.ReadKey(); ? 5:File.ReadAllLines(路徑,讀取的編碼方式); //返回一個字符串數組? File.ReadAllText(路徑,讀取的編碼方式); //返回一個字符串 前面這兩個方法只能讀取文本文件,不能讀取音樂文件、多媒體文件等; File.RradAllBytes(); //返回一個字節(byte)數組,可以讀取各種文件,包括音樂、視頻文件。 ? 6:絕對路徑和相對路徑? 絕對路徑:通過給定的這個路徑直接能在我的電腦中找到這個文件。 相對路徑:文件相對于應用程序的路徑。 我們在開發的過程中盡量使用相對路徑; ? 7:File.WriteAllLines(路徑,字符串數組); File.WriteAllText(路徑,字符串); File.WriteAllBytes(路徑,字節數組); //這三個方法都會覆蓋掉之前文本中有的東西。 ? 8:在文本的后面追加東西有這幾個方法: File.AppendAllLines(路徑,字符串數組); File.AppendAllText(路徑,字符串); ? File類只能用來讀取小文件,讀取大文件需要用文件流; ? ? 8:泛型List List<T> list=new List<T>(); list.Add(); list.AddRange(); list.Remove(); list.removeAt(); list.Clear(); list.Reverse(); 泛型要比數組方便的多,類型一旦確定就能像動態數組一樣用,并且泛型和數組之間可以相互轉化; 如:int[] nums=list.ToArrray(); string[] str={"a","b","c"}; List<string> listtwo= str.ToList(); ? ? ? ? 9:裝箱、拆箱 裝箱:將值類型轉換為引用類型。 拆箱:將引用類型轉換為值類型。 看兩種類型是否發生了裝箱或者拆箱,要看兩者之間是否有繼承關系;如果沒有繼承關系,一定沒有發生裝箱或者拆箱,有繼承關系才有可能發生裝箱或者拆箱。 在我們的代碼中,要盡量避免裝箱或者拆箱,因為這樣時間會浪費內存,耗時較長。 ? ? 10:Dictionary 字典 Dictionary<int,string> dic=new Dictionary<int,string>(); dic.Add(1,"a"); dic.Add(2,"b"); dic.Add(3,"c"); dic[1]="新來的"; 遍歷的時候: Foreach(Var item in dic.Keys) { ?Console.WriteLine("{0}----{1}",item,dic[item]); } 或者是: Foreach(KeysValuePair<int,string> kv in dic) { ?Console.WriteLine("{0}----{1}",kv.Keys,kv.Values); } ? ? 11: FileStream是操作字節的,因此可以操作包括文本以外的其它各種文件; StreamReader和StreamWriter是操作字符的,因此只能操作文本文件。 ? ? 12: 將創建文件流對象的過程寫在using當中,會自動的幫助我們釋放流所占用的空間。 StreamReader和StreamWriter是專門用來操作文件的,如果只針對文件的話,用StreamReader 和StreamWriter要比FileStream方便的多。 接觸到關于流的類時,一定要記得把創建對象的部分寫在using里面,否則會容易造成忘記釋放 資源,而造成內存泄漏。 用FileStream的好處是,可以操作任意類型的文件,但是中間要涉及到編碼格式的轉換。
轉載于:https://www.cnblogs.com/ZT-SummerRain/p/4547966.html
總結
以上是生活随笔為你收集整理的C#基础篇--文件(流)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请问,水注后留不住水,自动溢出,为何?
- 下一篇: 《微之宅残牡丹》是谁的作品?