I think access() can't be used because it will also fail if the file exists but the permissions don't allow accessing it
Edit:
I just realized, that you would have the same problem with stat(), but you can check if errno is [EACCES], because in that case the file exists, but the access was simply denied