日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net 流(Stream) - 文件流、内存流、网络流

發布時間:2025/3/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net 流(Stream) - 文件流、内存流、网络流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、文件流 FileStream

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

創建FileStream實例

1、.Net提供多種獲取FileStream對象的方法,其中構造函數就有10多種,我們看下典型的構造函數順便講解下參數含義:

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:打開文件,用于讀寫;

2、除了FileStream類本身提供的構造函數外,System.IO命名空間下的File和FileInfo類也提供了創建FileStream對象的方法。其中OpenRead方法返回只讀文件流,OpenWrite方法返回只寫文件流。如:

FileStream fs=File.OpenRead(@"c:\file.txt");

FileStream的讀寫方法:

public override int Read(byte[] array, //內存緩沖區,儲存從文件流中讀取的數據int offset, //array開始寫入數據的下標值int count //從文件流中讀取的字節大小 );public override void Write(byte[] array, //內存緩沖區,存儲了要寫入流的字節數據int offset, // 從array的下標值開始取數據int count //要寫入的字節數 );

FileStream實例

try {//寫入FileStream fileStream = new FileStream(@"d:\test.txt", FileMode.OpenOrCreate);byte[] content = Encoding.UTF8.GetBytes("我愛我家");fileStream.Write(content, 0, content.Length);fileStream.Position = 0; //設置當前位置content = Encoding.UTF8.GetBytes("我愛你家");fileStream.Write(content, 0, content.Length);fileStream.Close();//讀取fileStream = new FileStream(@"d:\test.txt", FileMode.Open);content = new byte[fileStream.Length];fileStream.Read(content, 0, content.Length);Console.WriteLine(Encoding.UTF8.GetString(content)); } catch (Exception ex) {Console.WriteLine(ex.Message); }

二、內存流 MemoryStream

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

既然字節數據也在內存中存儲,為什么還要引入內存流的概念呢?這是因為內存流和字節數組雖然都位于程序緩沖區,但是具有不同特性。內存流相對于字節數組而言,具有流特有的特性,并且容量可自動增長,在數據加密以及對長度不定的數據進行緩存等場合,使用內存流比較方便。

創建MemoryStream實例

MemoryStream有多種構造函數,部分舉例如下:

  • public MemoryStream();該構造函數初始分配的容量大小為0,隨著數據的不斷寫入,其容量可以不斷地自動擴展。
  • public MemoryStream(byte[] buffer);根據字節數組buffer初始化,實例的容量大小規定為字節數組的長度。
  • public MemoryStream(int capacity);容量固定為capacity。

MemoryStream實例

MemoryStream mem = new MemoryStream(); Console.WriteLine("初始分配的容量:"+mem.Capacity+" 初始使用量:"+mem.Length); byte[] content = Encoding.UTF8.GetBytes("我愛我家"); mem.Write(content, 0, content.Length); Console.WriteLine("初始分配的容量:" + mem.Capacity + " 初始使用量:" + mem.Length);


三、網絡流NetWorkStream

網絡流的意思是數據在網絡的各個位置之間是以連續的字節形式傳輸的,NetWorkStream只能用于面向連接的套接字。

對于NetWorkStream流,寫入操作是指從來源端內存緩沖區到網絡上的數據傳輸;讀取操作是從網絡上到接收端內存緩沖區的數據傳輸。

如需對NetWorkStream深入了解,請查閱相關資料。

轉載于:https://www.cnblogs.com/zhaiqianfeng/archive/2012/08/29/4617733.html

總結

以上是生活随笔為你收集整理的.net 流(Stream) - 文件流、内存流、网络流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。