Stream、FileStream、MemoryStream的区别
?
1.Stream:流,在msdn的定義:提供字節(jié)序列的一般性視圖,Stream提供了讀寫流的方法是以字節(jié)的形式從流中讀取內容。而我們經常會用到從字節(jié)流中讀取文本或者寫入文本,微軟提供了StreamReader和StreamWriter類幫我們實現(xiàn)在流上讀寫字符串的功能。
2.FileStream:文件流,繼承Stream。一個FileStream類的實例實際上代表一個文件流,使用FileStream類可以對文件系統(tǒng)上的文件進行讀取、寫入、打開和關閉操作。
public class FileStream : Stream
{
}
public?FileStream(string path, FileMode mode, FileAccess access);
path指明文件所在的路徑信息;
mode是FileMode的枚舉值,表示文件打開或創(chuàng)建的方式
CreateNew:指定操作系統(tǒng)應創(chuàng)建新文件,如果文件已經存在,則引發(fā)IOException;
?Create:指定操作系統(tǒng)應創(chuàng)建新文件,如果文件已經存在,它將被覆蓋;
?Open:指定操作系統(tǒng)應打開現(xiàn)有文件,如果文件不存在,則引發(fā)FileNotFoundException;
?OpenOrCreate:指定操作系統(tǒng)應打開文件,如果文件不存在,則創(chuàng)建新文件;
?Truncate:指定操作系統(tǒng)應打開現(xiàn)有文件,文件一旦打開,就將截斷為零字節(jié)大小;
?Append:打開先有文件并把Position設置至文件尾,如果文件不存在將創(chuàng)建新文件。Append只能同F(xiàn)ileAccess.Write一起使用
access是FileAccess的枚舉值,它控制對文件的訪問權限
?Read:打開文件用于只讀;
?Write:打開文件用于只寫;
?ReadWrite:打開文件,用于讀寫;
//創(chuàng)建新文件
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類表示的是保存在內存中的數(shù)據(jù)流,由內存流封裝的數(shù)據(jù)可以在內存中直接訪問。內存一般用于暫時緩存數(shù)據(jù)以降低應用程序對臨時緩沖區(qū)和臨時文件的需要。
?
相關用法:
???? 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;
轉載于:https://www.cnblogs.com/qqhfeng/p/10167989.html
總結
以上是生活随笔為你收集整理的Stream、FileStream、MemoryStream的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Keras:基于Python的深度学习库
- 下一篇: Linux查看JDK版本和安装位置