Yes, kqueue can be used to watch files for readability. From the man page:
EVFILT_READ Takes a file descriptor as the identifier, and returns
whenever there is data available to read. The behavior
of the filter is slightly different depending on the
descriptor type.
[...]
Vnodes
Returns when the file pointer is not at the end of
file. data contains the offset from current posi-
tion to end of file, and may be negative.
("vnodes", in this context, are regular files.)
As regular files are always writable, it makes no sense to apply EVFILT_WRITE
to them.