A remote file represents a file object on a remote storage. Its purpose is to identify a file and allow {@link TransferManager}s to upload/download local files.
Transfer manager operations take either RemoteFile instances, or classes that extend this class. Depending on the type of the sub-class, they might store the files at a different location or in a different format to optimize performance.
Important: Sub-classes must offer a {@link RemoteFile#RemoteFile(String) one-parameter constructor} that takes a String argument. This constructor is required by the {@link RemoteFileFactory}.
@author Philipp C. Heckel