標籤:table byte names 技術 amr 檔案的 padding 設定檔 符號
上一章我們對線程同步進行講解。瞭解如何去處理可能發生的髒資料。而本章就要講有關於C#在讀取IO檔案的時候,常常用到的操作類。這一章的內容會比較少。但是筆者還是總結出來讓讀者們有一個學習的方向。不至於不知道學習些什麼。
這一個靜態類。可以說是一個工具類吧。他裡同包含了很多關於處理檔案的功能。筆者只是列出常用的一些功能。更多的希望讀者們自行去瞭解。
1.開啟一個檔案流。開啟檔案有很三種。如下代碼
public static FileStream Open(string path, FileMode mode);public static FileStream Open(string path, FileMode mode, FileAccess access);public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share);
我們可以看到總共有四個參數。
path參數:表示檔案的路徑。
FileMode參數:開啟檔案的模式。如:建立 、開打或是建立等模式。請讀者們自行查看。也可以按F12查看源碼裡面的註解。
FileAccess參數:操作的模式。是唯讀還是讀寫。還是唯寫。
FileShare參數:表示操作完之後是事情。請讀者們自行查看。也可以按F12查看源碼裡面的註解。
看一下筆者寫的簡單的列子吧。這樣子方便學習。如下
1 static void Main(string[] args) 2 { 3 using (FileStream fs = File.Open("TextFile1.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) 4 { 5 if (fs.CanRead) 6 { 7 List<byte> dataList = new List<byte>(); 8 byte[] buffer = new byte[1024]; 9 int len = 0;10 11 while ((len = fs.Read(buffer, 0, buffer.Length)) > 0)12 {13 byte[] tmpBuffer = new byte[len];14 Array.Copy(buffer, 0, tmpBuffer, 0, tmpBuffer.Length);15 dataList.AddRange(tmpBuffer);16 }17 18 Console.WriteLine(Encoding.UTF7.GetString(dataList.ToArray(), 0, dataList.Count));19 }20 }21 22 Console.ReadKey();23 24 }
FileStream類就是一個檔案流。有了這個類我們就可以對檔案做讀寫操作。相當於JAVA的FileInputStream類。上面的代碼中我們可以看到筆者用到了一個Array類。他裡麵包含了很多對數組的操作。讀者們可以看看。在輸出的時候,筆者用到了編碼格式的內容。Encoding是獲得編碼格式的開始。所以一定要記得Encoding類。
2.直接記取檔案內容。我們上面看到了要讀取一個檔案的內容。我們要做很多的事情。但是File類事實為我們做了一個簡化的方法。
Console.WriteLine(File.ReadAllText("TextFile1.txt", Encoding.UTF7));
好吧。我們上面做了那麼多的事情還不如他一句話的事。跟他類似的方法都是以Read開頭的。請讀者們自行查看。同理我們就可以看到一些以Write開頭的方法。沒有錯。就是寫入的意思。相信不用筆者多說了。
3.刪除檔案。這個功能很常用。也很簡單
File.Delete("TextFile1.txt");
4.判斷是否存在。返回ture表示存在。
File.Exists("TextFile1.txt");
Directory類同File類一樣子是一個靜態類。只是File類是用於處理檔案,而Directory類卻是用於處理目錄。說到這裡相信大家都明白。這裡也是筆者為什麼沒有說上面的File類相當於JAVA的File類了。卻確的說應該是倆者加在一起相當於JAVA的File類。
1.獲得目錄下的檔案。
string[] fileNames = Directory.GetFiles(".");
2.建立對應的目錄。
DirectoryInfo dir = Directory.CreateDirectory("./test");if (dir.Exists){ Console.WriteLine("建立成功");}else{ Console.WriteLine("建立失敗");}
3.判斷是否存在。
if (Directory.Exists("./test")) Console.WriteLine("test目錄已經存在");
不得不說筆者在操作IO的時候,常常會用到Path類。他也是一個靜態類。不要小看他,他有一些小功能真的很不錯。下列就是筆者常常用的功能。
1.組裝目錄路徑。
string dir = Path.Combine(".", "test");
2.獲得沒有副檔名的檔案名稱。他會幫你去掉“.txt”.
string name = Path.GetFileNameWithoutExtension("TextFile1.txt");
3.獲得絕對路徑裡面的目錄路徑。這個時候就會返回“E:\\test\\”
string directoryNameg = Path.GetDirectoryName("E:\\test\\TextFile1.txt");
4.判斷是否為絕對路徑。
Path.IsPathRooted("E:\\test\\TextFile1.txt");
| StreamReader類和StreamWriter類 |
筆者讀取文字資料流的檔案常常會用StreamReader類。我們可以看到下面的代碼中有一叫@的符號。這個用於表示那後的字串是表示路徑。這個是你就可以不用“\\”了。只要用"\"就可以了。
using (StreamReader sr = new StreamReader(@".\TextFile1.txt", Encoding.UTF8, true)){ while (!sr.EndOfStream) { Console.WriteLine(sr.ReadLine()); }}
而常常用StreamWriter類來寫入。
using (FileStream fs = new FileStream(@".\TextFile1.txt", FileMode.OpenOrCreate)){ StreamWriter sw = new StreamWriter(fs); sw.WriteLine("i am aomi"); sw.Flush();}
筆者在開發應用的時候,常常會遇到關於讀取xml設定檔。在C#裡面常常會用到XmlDocument類。他就是一個讀取Xml檔案的操作類。相當於JAVA的Dom4j裡面的SAXReader類。大部分的操作都很像。讀者們不用擔心。
XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("./XMLFile1.xml");XmlElement xmlEle = xmlDoc.DocumentElement;if (xmlEle.HasChildNodes){
Console.WriteLine(xmlEle.SelectSingleNode("Name").InnerText);}
本章的內容會比較少。但筆者認為也不可以忽略。到了這一章可以說關於C#基礎知識便全部結束了。而後的章節將進入C#應用開發的進階部分的介紹了。
Java進擊C#——文法之IO操作