Yes, it is. A file is just a representation of resources, nothing more. You can have files as a user convenience without even having a file system, but rather a persistent object store.
A file is an object that supports the methods open(), read(), write(), and a few others. That's about a generic as you can get.
If I write <data> /dev/net/tcp can I read and get <data> back ?
Can I append <data> /dev/mouse ?
Sharing {open,read,write,close} interface, but with exception and different semantics leads to a weird flavour of genericity.