看板 C_Sharp 關於我們 聯絡資訊
※ 引述《stu87616 (DoubleLight)》之銘言: : 要寫一個特殊檔案表頭,檔案大小都不太大, : 後面接續的資料也都沒有很大, : 我現在的做法是 : List<byte> list = new List<byte>(); : byte[] writing = new byte[] : { : 0x00,0x00,0x00,0x00, : 0x00,0x00,0x00,0x00, : 0x00,0x00,0x00,0x00 : }; //(資料只是舉例) : list.AddRange(writing); : writing = new byte[]{................}; : . : . : 如此這般分成幾段把固定和非固定的資料加進list裡 : 最後一口氣用Write.(list.Array());寫進BinaryWriter裡 : 只是我對這種做法一直覺得怪怪的, : 後來我去跑了一些效能時間測試的case : 發現一次只有10~40筆左右的資料,先列成byte陣列還比較費時, : 不如直接執行10~40次的list.Add : 我原先是覺得byte[]會比較容易維護, : list還有AddRange的特別函數可以用,照理來說多少有優勢才是 : 但似乎不是這樣,想來版上問問看這類型的case有沒有更好多作法? byte[] writing = new byte[] { 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 }; 就直接寫入記憶體或是檔案 不用再透過List 去組合 BinaryWriter writeBinay = new BinaryWriter(writeStream); writeBinay.write(writing); writeBinay.write(接下來你要的資料); 以上是我自己的想法 如果不對或是不好再請指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.49.162
stu87616:感謝回復 我原本擔心的是多次直接使用BW.Write效能不好 06/20 11:35
stu87616:才會想說先用個List來蒐集 最後一次塞進去 06/20 11:35
stu87616:所以是直接每次都直接寫進去會比較好嗎? 06/20 11:35
s3748679:痾.. 一般檔案開啟不是會有緩衝區嗎 06/20 12:59
stu87616:還有一個考量是..有可能還會對資料進行修改 06/20 16:28
stu87616:希望是保留這個自由度下去實作 06/20 16:28
s3748679:BinaryWriter有void Write(byte[ ] buffer)可以用啊 06/20 22:49
s3748679:void Write(byte[ ] buffer, int index, int count)這個 06/20 22:50
s3748679:也是~ 06/20 22:50
s3748679:Stream 也有Write(byte[] buffer, int offset, int count 06/20 22:52
s3748679:)可以用~ 06/20 22:52