成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#使用MemoryStream類讀寫內(nèi)存

開(kāi)發(fā) 后端
MemoryStream和BufferedStream都派生自基類Stream,因此它們有很多共同的屬性和方法,但是每一個(gè)類都有自己獨(dú)特的用法。這兩個(gè)類都是實(shí)現(xiàn)對(duì)內(nèi)存進(jìn)行數(shù)據(jù)讀寫的功能,而不是對(duì)持久性存儲(chǔ)器進(jìn)行讀寫。來(lái)看本文。

和FileStream一樣,MemoryStream和BufferedStream都派生自基類Stream,因此它們有很多共同的屬性和方法,但是每一個(gè)類都有自己獨(dú)特的用法。這兩個(gè)類都是實(shí)現(xiàn)對(duì)內(nèi)存進(jìn)行數(shù)據(jù)讀寫的功能,而不是對(duì)持久性存儲(chǔ)器進(jìn)行讀寫。

讀寫內(nèi)存-MemoryStream類

MemoryStream類用于向內(nèi)存而不是磁盤讀寫數(shù)據(jù)。MemoryStream封裝以無(wú)符號(hào)字節(jié)數(shù)組形式存儲(chǔ)的數(shù)據(jù),該數(shù)組在創(chuàng)建MemoryStream對(duì)象時(shí)被初始化,或者該數(shù)組可創(chuàng)建為空數(shù)組。可在內(nèi)存中直接訪問(wèn)這些封裝的數(shù)據(jù)。內(nèi)存流可降低應(yīng)用程序中對(duì)臨時(shí)緩沖區(qū)和臨時(shí)文件的需要。下表列出了MemoryStream類的重要方法:

1、Read():讀取MemoryStream流對(duì)象,將值寫入緩存區(qū)。

2、ReadByte():從MemoryStream流中讀取一個(gè)字節(jié)。

3、Write():將值從緩存區(qū)寫入MemoryStream流對(duì)象。

4、WriteByte():從緩存區(qū)寫入MemoytStream流對(duì)象一個(gè)字節(jié)。

Read方法使用的語(yǔ)法如下:

  1. mmstream.Read(byte[] buffer,offset,count) 

其中mmstream為MemoryStream類的一個(gè)流對(duì)象,3個(gè)參數(shù)中,buffer包含指定的字節(jié)數(shù)組,該數(shù)組中,從offset到(offset +count-1)之間的值由當(dāng)前流中讀取的字符替換。Offset是指Buffer中的字節(jié)偏移量,從此處開(kāi)始讀取。Count是指最多讀取的字節(jié)數(shù)。Write()方法和Read()方法具有相同的參數(shù)類型。

MemoryStream類的使用實(shí)例:

  1. using System;  
  2. using System.IO;  
  3. using System.Text;  
  4. class program{  
  5. static void Main()  
  6. {  
  7. int count;  
  8. byte[] byteArray;  
  9. char[] charArray;  
  10. UnicodeEncoding uniEncoding=new UnicodeEncoding();  
  11. byte[] firstString=uniEncoding.GetBytes("努力學(xué)習(xí)");  
  12. byte[] secondString=uniEncoding.GetBytes("不做C#中的菜鳥");  
  13. using (MemoryStream memStream=new MemoryStream(100))  
  14. {  
  15. memStream.Write(firstString,0,firstString.Length);  
  16. count=0;  
  17. while(count<secondString.Length)  
  18. {  
  19. memStream.WriteByte(secondString[count++]);  
  20. }  
  21. Console.WriteLine("Capacity={0},Length={1},Position={2}\n",memStream.Capacity.ToString(),memStream.Length.ToString(),memStream.Position.ToString());  
  22. memStream.Seek(0, SeekOrigin.Begin);  
  23. byteArray=new byte[memStream.Length];  
  24. count=memStream.Read(byteArray,0,20);  
  25. while(count<memStream.Length)  
  26. {  
  27. byteArray[count++]=Convert.ToByte(memStream.ReadByte());  
  28. }  
  29. charArray=new char[uniEncoding.GetCharCount(byteArray,0,count)];  
  30. uniEncoding.GetDecoder().GetChars(byteArray,0,count,charArray,0);  
  31. Console.WriteLine(charArray);  
  32. Console.ReadKey();  
  33. }  
  34. }  

在這個(gè)實(shí)例代碼中使用了using關(guān)鍵字。注意:

using 關(guān)鍵字有兩個(gè)主要用途:

1、作為指令,用于為命名空間創(chuàng)建別名或?qū)肫渌臻g中定義的類型。

例如:

  1. using System; 

2、作為語(yǔ)句,用于定義一個(gè)范圍,在此范圍的末尾將釋放對(duì)象。

  1. using(Connection conn=new Connection(connStr))  
  2. {  
  3. }  
  4. //使用using關(guān)鍵字可及時(shí)銷毀對(duì)象 

MemoryStream.Capacity 屬性 取得或設(shè)定配置給這個(gè)資料流的位元組數(shù)目。

MemoryStream.Position 屬性 指定當(dāng)前流的位置。

MemoryStream.Length 屬性獲取用字節(jié)表示的流長(zhǎng)度。

SeekOrigin()是一個(gè)枚舉類,作用設(shè)定流的一個(gè)參數(shù)。

SeekOrigin.Begin我得理解就是文件的最開(kāi)始,“0”是偏移,表示跳過(guò)0個(gè)字節(jié)。寫2就是跳過(guò)2個(gè)字節(jié)。

MemoryStream類通過(guò)字節(jié)讀寫數(shù)據(jù)。本例中定義了寫入的字節(jié)數(shù)組,為了更好的說(shuō)明Write和WriteByte的異同,在代碼中聲明了兩個(gè)byte數(shù)組,其中一個(gè)數(shù)組寫入時(shí)調(diào)用Write方法,通過(guò)指定該方法的三個(gè)參數(shù)實(shí)現(xiàn)如何寫入。

另一個(gè)數(shù)組調(diào)用了WriteByte方法,每次寫入一個(gè)字節(jié),所以采用while循環(huán)來(lái)完成全部字節(jié)的寫入。寫入MemoryStream后,可以檢索該流的容量,實(shí)際長(zhǎng)度,當(dāng)前流的位置,將這些值輸出到控制臺(tái)。通過(guò)觀察結(jié)果,可以確定寫入MemoryStream流是否成功。

調(diào)用Read和ReadByte兩種方法讀取MemoryStream流中的數(shù)據(jù),并將其進(jìn)行Unicode編碼后輸出到控制臺(tái)。

【編輯推薦】

  1. 微軟MVP為您詳述ADO.NET連接池
  2. ADO.NET入門 五大你需要知道的對(duì)象
  3. 用C#實(shí)現(xiàn)HTTP協(xié)議下的多線程文件傳輸
  4. 關(guān)于C#委托你不可不知的幾件事
  5. 淺談C++調(diào)用C#的DLL程序方法
責(zé)任編輯:于鐵 來(lái)源: 下崗職工學(xué)編程的個(gè)人空間
相關(guān)推薦

2009-08-20 10:53:23

C#操作內(nèi)存

2009-08-20 11:07:07

C#共享內(nèi)存

2009-08-14 16:08:34

讀寫B(tài)inaryC#編程實(shí)例

2009-08-13 09:34:55

C#讀寫ini文件

2009-09-04 15:53:42

C#內(nèi)存流

2009-08-25 09:49:09

C#內(nèi)存Graphic

2009-08-12 14:13:51

C#讀寫Excel文件

2009-08-28 10:14:45

C#內(nèi)存泄露

2009-08-12 16:46:22

C#讀取XML文檔

2009-09-07 14:29:52

C# ServiceC

2009-08-06 14:43:10

C# Calculat

2009-08-21 17:24:06

C# SingleIn

2009-08-26 17:05:23

C# ThreadPo

2009-09-03 10:42:16

C# Employee

2009-08-12 09:41:28

C# Director

2009-09-03 15:57:11

C# SystemMe

2009-08-21 17:24:06

C# SingleIn

2009-08-31 15:13:46

C# CWorker類

2009-08-10 10:04:25

C#抽象類C#接口

2024-04-25 12:35:14

JSONC#開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美日韩一区二区 | 久久久xxx | zzzwww在线看片免费 | 免费一区二区三区 | 中文字幕一区二区三区四区五区 | 一区二区三区在线播放 | 欧美伦理一区 | 中文字幕二区 | 日日干夜夜干 | 日日摸夜夜添夜夜添精品视频 | av黄色片在线观看 | 国产精品视频在线播放 | 精品国产免费一区二区三区五区 | 粉嫩av| 久久成人一区 | 男人天堂午夜 | 久久免费高清视频 | 日本涩涩视频 | 国产精品久久一区二区三区 | 国产精品视频在线播放 | 99精品免费 | 九九综合 | 欧美v在线观看 | 日本羞羞影院 | 欧美成人激情 | 国产精品一二三区 | 中文字幕欧美日韩一区 | 色性av| 亚洲精品日韩欧美 | 欧美成人精品激情在线观看 | 国产精品美女久久久久久久网站 | 亚洲精品视频免费观看 | 日韩资源| 国产黄色在线观看 | 午夜99 | 99久久99久久精品国产片果冰 | 国产精品综合久久 | 91久操网 | 天天躁日日躁aaaa视频 | 久久国产区 | 亚洲第一网站 |