簡體   English   中英

Delphi-如何逐字節讀取文件流?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM