程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Java進擊C#——語法之IO操作,

Java進擊C#——語法之IO操作,

編輯:關於.NET

Java進擊C#——語法之IO操作,


本章簡言

上一章我們對線程同步進行講解。了解如何去處理可能發生的髒數據。而本章就要講有關於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#應用開發的高級部分的介紹了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved