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的好處是,可以操作任意類型的文件,但是中間要涉及到編碼格式的轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM