Discussion:
ReadFile - how to detect EOF ?
(too old to reply)
R.Wieser
2021-05-16 16:25:25 UTC
Permalink
Hello all,

I'm reading a file synchronously and non-overlapped using ReadFile. I'm
also reading the file blockwise, and do not want to deal with an empty block
when the filesize turns out to be an exact multiple of the blocksize (every
block must contain data).

IOW, how do I detect the EOF /without/ trying to use ReadFile and getting
zero bytes back.

I've tried a ReadFile of zero bytes, but that doesn't quite work. :-\

I can ofcourse get and store the filesize beforehand and for each block
subtract the ammount of bytes read, but that means I have duplicate data :
a file that ends and a counter that /should/ than be zero. Which I would
rather not have.

I've ofcourse already DDGed the intarwebz for a hint, but have had not luck.

Regards,
Rudy Wieser
Christian Astor
2021-05-29 15:53:19 UTC
Permalink
You can see MSDN :
https://docs.microsoft.com/en-us/windows/win32/fileio/testing-for-the-end-of-a-file
Post by R.Wieser
Hello all,
I'm reading a file synchronously and non-overlapped using ReadFile. I'm
also reading the file blockwise, and do not want to deal with an empty block
when the filesize turns out to be an exact multiple of the blocksize (every
block must contain data).
IOW, how do I detect the EOF /without/ trying to use ReadFile and getting
zero bytes back.
I've tried a ReadFile of zero bytes, but that doesn't quite work. :-\
I can ofcourse get and store the filesize beforehand and for each block
a file that ends and a counter that /should/ than be zero. Which I would
rather not have.
I've ofcourse already DDGed the intarwebz for a hint, but have had not luck.
Regards,
Rudy Wieser
R.Wieser
2021-05-29 16:20:55 UTC
Permalink
Christian,
Post by Christian Astor
https://docs.microsoft.com/en-us/windows/win32/fileio/testing-for-the-end-of-a-file
Yeah, I found that too. The problem with it is that you *have to read data*
to be able to detect there isn't any more of it.

IOW, if I want to mark the current full block of data as the last one I must
have already read (some of) the next block able to determine the EOF status.
And thats something I'd rather not do.

Regards,
Rudy Wieser
holyghost
2021-09-24 03:46:35 UTC
Permalink
Post by R.Wieser
Christian,
Post by Christian Astor
https://docs.microsoft.com/en-us/windows/win32/fileio/testing-for-the-end-of-a-file
Yeah, I found that too. The problem with it is that you *have to read data*
to be able to detect there isn't any more of it.
IOW, if I want to mark the current full block of data as the last one I must
have already read (some of) the next block able to determine the EOF status.
And thats something I'd rather not do.
Regards,
Rudy Wieser
Maybe use streams and the "<<", ">>" operators. Then by reading your
previous posts buy K&R (ANSI C) and Strousstrup (The C++ programming
language) books. It will help you a lot.

holly
--
(__)
oo )
|_/\

My Software & Art company (donations are welcome) :
https://ko-fi.com/brandywine9
R.Wieser
2021-09-24 09:21:08 UTC
Permalink
holyghost,
Post by holyghost
Maybe use streams and the "<<", ">>" operators.
Alas, I'm not using C{something}to program in.

Regards,
Rudy Wieser

Loading...