C#四種文件流的區別


1、FileStream類的讀寫操作

FileStream類可以對任意類型的文件進行讀取操作,而且我們也可以按照需要指定每一次讀取字節長度,以此減少內存的消耗,提高讀取效率。

代碼實例:

//創建文件讀取對象 
using(FileStream fileReader=new FileStream (文件的物理路徑,FileMode.Open))
            {
               //創建文件寫入對象
                using(FileStream fileWrite=new FileStream (需要保存的文件物理路徑+文件后綴名,FileMode.Create))
                {
                    //指定文件一次讀取時的字節長度
                    byte[] by=new byte [1024*1024*10];
                    int count = 0;
                    while (true)
                    {
                        //將文件轉換為二進制數據保存到內存中,同時返回讀取字節的長度
                        count = fileReader.Read(by, 0, by.Length);
                        if (count == 0)//文件是否全部轉換為二進制數據
                        {
                            break;
                        }
                        //將二進制數據轉換為文件對象並保存到指定的物理路徑中
                        fileWrite.Write(by, 0, count);
                    }
                    MessageBox.Show("OK");
                }
            }

2、SteamWriter類/StreamReader類的讀寫操作

StreamWriter/SteamReader的特點是,它只能對文本文件進行讀寫操作,可以一行一行的寫入和讀取。

代碼實例:

static void Main(string[] args)
        {
            //創建文本文件讀取對象
            using (StreamReader s = File.OpenText(文本文件的物理路徑))
            {
                string read = null;
                while ((read = s.ReadLine()) != null) 
                { 
                    Console.WriteLine(read); 
                }
            }
        }

3、File類的文件讀取操作特點

File類它是一個靜態類,這意味着我們不可以通過創建file類對象來對文件進行讀寫操作。當我們通過反編譯工具來查看file類的那些靜態方法時,我們可以發現,在這個類里面的方法封裝了可以執行文件讀寫操作的對象,例如:Filestream,StreamWriter/StreamReader。這也說明了當我們通過調用File類的靜態方法去執行任何文件的讀寫操作時,實際上是在該靜態方法中創建了FileStream對象,並通過它來執行文件的讀寫操作。例如:File類的靜態方法Create()

public static FileStream Create(string path);

同樣的在對文本文件進行讀寫操作時也是調用了StreamWriter/StreamReader對象實現的。例如:

public static StreamWriter AppendText(string path);

File類是一次性的將文件進行讀取和寫入,如果文件是比較小的化,這無疑是對文件讀寫的效率進行提高,但是如果文件過大的話,會造成系統內存消耗過大,甚至內存溢出。


免責聲明!

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



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