原因:要求將服務端生成的文字檔案改為在客戶端生成。文字檔案的內容都來自服務端,原**段以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...