Java進擊C#——文法之IO操作

來源:互聯網
上載者:User

標籤:table   byte   names   技術   amr   檔案的   padding   設定檔   符號   

本章簡言

上一章我們對線程同步進行講解。瞭解如何去處理可能發生的髒資料。而本章就要講有關於C#在讀取IO檔案的時候,常常用到的操作類。這一章的內容會比較少。但是筆者還是總結出來讓讀者們有一個學習的方向。不至於不知道學習些什麼。

File類

這一個靜態類。可以說是一個工具類吧。他裡同包含了很多關於處理檔案的功能。筆者只是列出常用的一些功能。更多的希望讀者們自行去瞭解。

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類

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目錄已經存在");
Path類

不得不說筆者在操作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();}
XmlDocument類

筆者在開發應用的時候,常常會遇到關於讀取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操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.