Uso un metodo che ho trovato sul sito della Sun, ti scrivo il codice:

//codice per salvare il file nel client richiedente
byte[] buffer = scarica.downloadFile("nomeDelFile");
BufferedOutputStream output = new BufferedOutputStream(newFileOutputStream(directory + "nomeDelFile");
output.write(buffer, 0, buffer.length);
output.flush();
output.close();

//codice per inviare il file al client richiedente
BufferedInputStream input = new BufferedInputStream(newFileInputStream("nomeFile") );
int dim=input.available();
byte buffer[]=new byte[dim];
input.read(buffer,0,buffer.length);
input.close();
return buffer;

in pratica mi viene ritornato il file sotto forma di array di byte e io lo salvo poi in un file vero e proprio.
Che codice hai usato tu per fare ciò?