用MemoryStream傳遞文字檔案內容

2021-04-17 19:43:06 字數 817 閱讀 2266

原因:要求將服務端生成的文字檔案改為在客戶端生成。文字檔案的內容都來自服務端,原**段以stream.writeline(string)方法寫入檔案。如果以string為引數傳遞到客戶端,而後使用相同方法,可以實現要求。但考慮嘗試以流為引數,傳遞文字檔案內容。

思路:以不與檔案關聯的memorystream為引數,服務端將string轉換為byte陣列,而後用memorystream.write方法寫入流;客戶端用streamwriter完成將流寫入檔案。

原始碼:服務端:

memorystream **

=new

memorystream();

byte

bs =system.text.encoding.default.getbytes(bakline);

//bakline is the string

**.write(bs, 

0, bs.length);

客戶端:

streamwriter sw 

=new

streamwriter(filepath, 

true

, system.text.encoding.getencoding(

"gb2312

"));

**.writeto(sw.basestream);

sw.close();

key:system.text.encoding.default.getbytes方法和streamwriter.asestream屬性

q: memorystream.close()的使用時機

p.s. stream是抽象類,不能例項化

使用MemoryStream類讀寫記憶體

memorystream類用於向記憶體而不是磁碟讀寫資料。memorystream封裝以無符號位元組陣列形式儲存的資料,該陣列在建立memorystream物件時被初始化,或者該陣列可建立為空陣列。可在記憶體中直接訪問這些封裝的資料。記憶體流可降低應用程式中對臨時緩衝區和臨時檔案的需要。下面列出了m...

對MemoryStream進行壓縮 加密

在應用deflatestream 或gzipstream進行壓縮的時候,一定要先呼叫其實例的close 方法,否則基流中的被壓 縮的資料是不完整的,無法進行解壓縮操作。這一點很重要!對記憶體流進行加密後應用基流這前一定要呼叫 cryptostream 的 flushfinalblock 方法,否則無...

用gdb來理解 值傳遞 指標傳遞 引用傳遞

1.常用的gdb命令 1 顯示 list list 顯示10行 list 1 顯示1 10行,再鍵入list或者回車,顯示下面10行 list 1,20 顯示1 20行 2 設定斷點 break break 15 在第15行設定斷點 break func 在函式func 入口設定斷點 info br...