Re: [問題] 請問關於readblock的疑問
※ 引述《miewQ (ICQ)》之銘言:
: 在讀取檔案用readblock,可以固定讀出某個特定size。
: 但是我發現我遇到一個問題,我讀出來的size與檔案實際大小的size有差。
: do
: {
: bytes=readAdapter.ReadBlock(str,0,1000);
: Console.WriteLine("{0}",bytes);
: total+=bytes;
: }
: while(bytes==1000);
我查了一下msdn對於ReadBlock的回傳值:
The number of characters that have been read. The number will be less than or
equal to count, depending on whether all input characters have been read.
至少說明了回傳值(number)"有可能"小於指定讀取數(count)
原因可能是io忙碌delay到傳得慢,或其他因素
因此上述寫法雖然很合乎邏輯,但卻忽略了硬體disk操作的忙碌因素
造成提早跳出的可能。
建議改採while(bytes>0)的作法,是比較保險的。
另外,你的buffer空間儘量可設成os最小的磁碟切割數
例如ntfs最小是4kb(4096),用它當作buffer大小比較合宜。
畢竟,對電腦而言,2的n次方是比較不需要再裁切的呀... :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.20.171
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章