Stream、FileStream、MemoryStream的區別


1.Stream:流,在msdn的定義:提供字節序列的一般性視圖,Stream提供了讀寫流的方法是以字節的形式從流中讀取內容。而我們經常會用到從字節流中讀取文本或者寫入文本,微軟提供了StreamReader和StreamWriter類幫我們實現在流上讀寫字符串的功能。

2.FileStream:文件流,繼承Stream。一個FileStream類的實例實際上代表一個文件流,使用FileStream類可以對文件系統上的文件進行讀取、寫入、打開和關閉操作。

public class FileStream : Stream
{

}
public FileStream(string path, FileMode mode, FileAccess access);
path指明文件所在的路徑信息;
mode是FileMode的枚舉值,表示文件打開或創建的方式
CreateNew:指定操作系統應創建新文件,如果文件已經存在,則引發IOException;
•Create:指定操作系統應創建新文件,如果文件已經存在,它將被覆蓋;
•Open:指定操作系統應打開現有文件,如果文件不存在,則引發FileNotFoundException;
•OpenOrCreate:指定操作系統應打開文件,如果文件不存在,則創建新文件;
•Truncate:指定操作系統應打開現有文件,文件一旦打開,就將截斷為零字節大小;
•Append:打開先有文件並把Position設置至文件尾,如果文件不存在將創建新文件。Append只能同FileAccess.Write一起使用

access是FileAccess的枚舉值,它控制對文件的訪問權限
•Read:打開文件用於只讀;
•Write:打開文件用於只寫;
•ReadWrite:打開文件,用於讀寫;

//創建新文件
FileStream fileStream = new FileStream(@"d:\test.txt", FileMode.Create);

//讀取
FileStream fileStream= new FileStream(@"d:\test.txt", FileMode.Open);

FileStream fs=File.OpenRead(@"c:\file.txt"); //這樣是返回只讀文件流。

 

3.MemoryStream:和文件流不同,MemoryStream類表示的是保存在內存中的數據流,由內存流封裝的數據可以在內存中直接訪問。內存一般用於暫時緩存數據以降低應用程序對臨時緩沖區和臨時文件的需要。

 

相關用法:

     MemoryStream ms = new MemoryStream();
     byte[] buffer = new byte[stream.Length];
     stream.Position = 0;
     int arrbyte = stream.Read(buffer, 0, buffer.Length);
     ms.Write(buffer, 0, arrbyte);

     FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(FilePath), FileMode.Create);

      //寫入流文件
      ms.WriteTo(fs);

     //西方內存      
     ms.Close();
      fs.Close();
      fs = null;
      ms = null;


免責聲明!

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



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