2010-10-04 51 views

回答

3

在C運行時庫級別,請看fread,fwritefseek

在Win32 API級別,請查看ReadFileWriteFileSetFilePointer。 MSDN有廣泛的覆蓋file I/O API's

請注意,ReadFile和WriteFile都採用OVERLAPPED結構參數,它允許您指定文件偏移量。對於支持字節偏移的所有文件,即使打開同步(即「非重疊」)I/O,也要遵守偏移量。

根據您嘗試解決的問題,file mapping可能是更好的設計選擇。

+0

隨着文件映射外,這些電話不是原子相對於文件中的位置。我認爲文件映射有點遠,但這是一個考慮因素。 – 2010-10-04 13:05:51

+3

ReadFile/WriteFile採用OVERLAPPED參數,該參數允許您指定您感興趣的文件偏移量。不要讓OVERLAPPED類型名稱誤導您 - 即使對於爲同步I/O打開的文件,偏移量也會受到尊重。 – 2010-10-04 18:32:13

+0

很好的答案! +1 – 2012-02-25 11:22:49

1

它看起來像你只需要使用LPOVERLAPPED參數ReadFile/WriteFile一個指針傳遞給OVERLAPPED結構與偏移指定偏移OffsetHigh

(注:其實你不得到重疊的IO,除非手柄與FILE_FLAG_OVERLAPPED打開)