Ok.
Posto che il percorso in cui salvare il file deciderai tu come ottenerlo (fisso, da chiedere all'utente tramite textbox, da chiedere tramite JFileChooser, ...) alla fine avrai una stringa o un oggetto File che rappresenta il percorso di destinazione (nell'esempio qui sotto è una stringa che rappresenta un percorso, quindi terminata dal separatore di percorso).

Non ti rimane altro da fare che leggere, a blocchi di N bytes (deciderai tu quanti byte alla volta), la risorsa che c'è sul server (il tuo file) e scriverlo quindi nel file system dell'utente.

codice:
String doveSalvare = ...;      // Qui avrai il percorso in cui salvare (che sarà terminato dal separatore di percorso)
String nomeDelFile = ...;      // Questo sarà il nome del file da creare
byte[] buffer = new byte[N];   // Il famoso blocco di N bytes

// Questo sarà l'URL del tuo file da salvare (quello presente sul server)
URL risorsa = new URL("http://www.tuosito.it/percorso/al/file/sul/server");

// Ottengo lo stream di input della risorsa
InputStream input = risorsa.openStream();

// Creo il file sul disco dell'utente
FileOutputStream output = new FileOutputStream(doveSalvare + nomeDelFile);
int byteLetti = 0;
while((byteLetti = input.read(buffer)) >= 0) {
   output.write(buffer, 0, byteLetti);
   output.flush();
}

// Chiudo il file sul disco dell'utente
output.close();

// Chiudo la risorsa sul server
input.close();
Chiaramente vanno gestite le eccezioni, che qui ho tralasciato.
Alla fine di questa operazione potresti visualizzare un messaggio all'utente per informarlo dell'avvenuto salvataggio.


Ciao.