Scaricare un file da una URL


Data la URL di un file, è possibile utilizzare l'oggetto BufferedInputStream per accedere al flusso di byte del file e copiarlo localmente con l'oggetto BufferedOutputStream, che richiede l'assegnazione di un nome al file scaricato e, quindi, anche di una estensione. Il metodo seguente prende come parametro la URL da cui scaricare il file, il nome completo del file di output (compreso di percorso) e il numero di secondi da usare come timeout di lettura (0 se non si vuole specificare un timeout).

public void downloadFileFromURL(String url, String filePathName, 
	int readTimeoutInSeconds) 
	throws MalformedURLException, IOException{
		
	//create connection, setting a timeout
	URLConnection urlConn = new URL(url).openConnection();
	if(readTimeoutInSeconds>0)
		urlConn.setReadTimeout(readTimeoutInSeconds*1000);
		
	//create the stream
	BufferedInputStream in=new BufferedInputStream(urlConn.getInputStream());
	FileOutputStream fos = new FileOutputStream(filePathName);

	//read the file
	BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
	byte[] data = new byte[1024];
	int x=0;
	while((x=in.read(data,0,1024))>=0){
		bout.write(data,0,x);
	}
	bout.close();
	in.close();
}