[英]Delphi - how read filestream byte by byte?
我正在使用流文件,但是發生“內存不足”錯誤。 我認為我必須逐字節讀取流。 然后,我使用此方法加載文件:
fs := TFileStream.Create("c:\a\a.avi", fmOpenRead or fmShareDenyWrite) ;
接下來,我重置流位置:
fs.positon:=0;
然后我試圖讀取流的第一個字節:
var
oneByte:byte;
begin
fs.Read(oneByte,2);
但它不能正常工作。 我的錯誤在哪里?
字節大小是1而不是2
fs.Read(oneByte, 1);
通過使用SizeOf()函數可以輕松防止此類錯誤
fs.Read(oneByte, SizeOf(oneByte));
另外, Read
返回讀取的字節數,以指示整個讀取是否成功。 您應該檢查該返回值以處理錯誤。
首選的慣用法是改用ReadBuffer
。 這將調用Read
並在發生錯誤的情況下引發異常。
正如@David Heffernan指出,逐字節讀取文件流不是最有效的方法。 看一下緩沖文件(以便更快地訪問磁盤)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.