libusb, and generally speaking trying to treat it like a stream won't work.
Broadly speaking, the data coming from (or expected by) a USB device is highly-device-specific: unless it's one of the standard classes, and in that case I'd expect it to be at e.g. /dev/lp0 rather than /dev/usb/lp0 or somewhere on the /dev/bus/usb tree.
If you were actually trying to read /dev/lp0 you could probably get at that via the kernel; same applies to network devices (i.e. USB-connected Ethernet) etc. However for just about anything else you'll find few alternatives to going via libusb, even if somebody's written a higher-level library.
MarkMLl