I'm involved in a project where there is communication between an android device and a vending machine over USB. We need to send .proto files, but I don't know how this is generally done.
One of the two devices has to be USB host on the other has to be implemented any USB device class, easiest is USB mass storage also possible is USB ACM and others.
In addition you need access/permissions to the folders from which you copy and to which you copy. This can be a problem if the Android is not rooted. Then the easiest way is to mount the filesystem of one of the machines on the other and copy the file using linux commands (BusyBox,...) or adb
with lsusb
the device classes that are implemented on a device can be listed, see http://www.linuxnix.com/find-usb-device-details-in-linuxunix-using-lsusb-command/