Download von Dateien

Status
Nicht offen für weitere Antworten.

jobu0101

Bekanntes Mitglied
Ich habe jetzt lange nichts mehr mit Java gemacht, besonders was das Internet angeht. Jetzt brauche ich für mein Programm eine Funktion, die eine Datei über das HTTP-Protokoll downloadet und an einen dafür vorgesehenen Platz lokal speichert.

Hat jemand zufällig eine solche Funktion parat?
 

Niki

Top Contributor
Vielleicht hilft dir das ja weiter. Funktioniert mit commons-httpclient
Code:
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;

public class HttpFileDownload {
	private HttpClient client = null;
	
	private PropertyChangeSupport pcs = null;
	
	public static final String PROGRESS_VALUE_CHANGED = "progress_value_changed";
	public static final String PROGRESS_INIT = "progress_init";
	
	private boolean stop = false;

	public HttpFileDownload() throws URIException, NullPointerException {
		this(null, 0, null, null);
	}

	public HttpFileDownload(String proxyHost, int proxyPort, String proxyUser,
			String proxyPwd) throws URIException, NullPointerException {
		pcs = new PropertyChangeSupport(this);
		client = new HttpClient();
		if (proxyHost != null) {
			client.getHostConfiguration().setProxy(proxyHost, proxyPort);
			AuthScope auth = new AuthScope(proxyHost, proxyPort);

			client.getState().setProxyCredentials(auth,
					new UsernamePasswordCredentials(proxyUser, proxyPwd));
		}
	}

	public void download(String url, File dir) throws HttpException,
			IOException {
		
		if(!dir.exists())
			dir.mkdirs();
		
		GetMethod method = new GetMethod(url);

		int index = url.lastIndexOf("/");
		String name = url.substring(index+1);
		
		name = name.replaceAll("[^\\d\\.a-zA-Z]", "_");
		
		File f = new File(dir, name);
		FileOutputStream fos = new FileOutputStream(f);
		

		client.executeMethod(method);
		
		
		
		long size = method.getResponseContentLength();
		long value = 0;
		pcs.firePropertyChange(PROGRESS_INIT, null, new Long(size));
		InputStream is = method.getResponseBodyAsStream();
		Header[] hArr = method.getResponseHeaders();
		for(Header h : hArr){
			System.out.println(h.getName() + " " + h.getValue());
		}
			
		byte[] b = new byte[1024 * 100];
		int l = is.read(b);
		while (l != -1 && !stop) {
			value += l;
			pcs.firePropertyChange(PROGRESS_VALUE_CHANGED, null, new Long(value));
			fos.write(b, 0, l);
			l = is.read(b);
		}
		fos.flush();
		fos.close();
		if(stop){
			f.delete();
			method.abort();
		} 			
		
		stop = false;
		pcs.firePropertyChange(PROGRESS_VALUE_CHANGED, null, new Long(0));
		method.releaseConnection();		
	}
	
	public void stop(){
		stop = true;
	}
	
	public void addPropertyChangeListener(PropertyChangeListener l) {
		this.pcs.addPropertyChangeListener(l);
	}

	public void removePropertyChangeListener(PropertyChangeListener l) {
		this.pcs.removePropertyChangeListener(l);
	}

	public static void main(String[] args) throws Exception {

		HttpFileDownload download = new HttpFileDownload();
		
		File cwd = new File(".");
		
		download.download("http://mirror.deri.at/apache/httpcomponents/commons-httpclient/source/commons-httpclient-3.1-src.zip", cwd);
		


	

	}
}

Ich hab leider noch nicht herausgefunden wie man den Namen der Datei ermittelt. Sollte meiner Meinung nach ja im Responseheader stehen, tut es aber nicht
 

mikachu

Top Contributor
oder du nimmst als backend das WGET tool, was natürlich frei ist :D
dort die syntax anschauen und los gehts.

das gibt es für verschiedene plattformen!
 

Einwegdose

Aktives Mitglied
Und wenn es nicht so groß sein soll ... :D

Für Text (HTML etc):

Code:
private static final int BUFFER_SIZE = 1024;

...
....

URL url = new URL("http://www.java-forum.org");
buffer = new char[BUFFER_SIZE];
br = new BufferedReader(new InputStreamReader(url.openStream()));
while ((readBytes = br.read(buffer, 0, BUFFER_SIZE)) != -1)                        // readBytes (int)
   page.append(new String(buffer, 0, readBytes));                                       // StringBuilder

Für Datenstreams kannste dann einen BufferedInputStream und einen FileOutputStream verwenden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Direkter Datei Download von csv bzw. PDF Dateien Java Basics - Anfänger-Themen 3
megachucky wo gibts icons, images und sound dateien zum download? Java Basics - Anfänger-Themen 2
F JDK 21 Download-Versionen Java Basics - Anfänger-Themen 2
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
F iText download/installieren Java Basics - Anfänger-Themen 22
J download zip von einer url Java Basics - Anfänger-Themen 13
K First-Source und Backup Download Java Basics - Anfänger-Themen 5
J Java FTP Download lädt datein nicht Ordentlich herunter Java Basics - Anfänger-Themen 9
D FTP Download Data Java Basics - Anfänger-Themen 7
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
O Download Java Java Basics - Anfänger-Themen 2
B Apache: jar-Datei Download als jar und nicht als zip Java Basics - Anfänger-Themen 4
S Https Verbindung aufbauen zum File Download Java Basics - Anfänger-Themen 7
I API-Download Java Basics - Anfänger-Themen 7
C Applikation zum Download anbieten Java Basics - Anfänger-Themen 5
C Java Download Java Basics - Anfänger-Themen 10
O download einer Datei Java Basics - Anfänger-Themen 2
Developer_X Download Problem Java Basics - Anfänger-Themen 2
D Java Download in mehrere Parts aufteilen Java Basics - Anfänger-Themen 2
I API download Java Basics - Anfänger-Themen 4
H Startfehler bei unbekannten Programm (Download) Java Basics - Anfänger-Themen 5
M Ordner Download Java Basics - Anfänger-Themen 11
F Dateigenerierung und -download in JavaEE Java Basics - Anfänger-Themen 4
saxman Java Source Code Download Java Basics - Anfänger-Themen 2
L JRE Download-Seite Java Basics - Anfänger-Themen 3
G Download PDF mit JSF Java Basics - Anfänger-Themen 3
L java API zum Download Java Basics - Anfänger-Themen 2
J Dateinamen für Download ändern! Java Basics - Anfänger-Themen 3
S Download einer Datei vom FTP-Server Java Basics - Anfänger-Themen 4
B API download Java Basics - Anfänger-Themen 8
P Problem beim Download von einem FTP Server Java Basics - Anfänger-Themen 5
B Kleines Download-Maneger als Applet Java Basics - Anfänger-Themen 34
M download von daten Java Basics - Anfänger-Themen 4
S download j2se 1.4.2 sdk Java Basics - Anfänger-Themen 7
E MS Java SDK Download Java Basics - Anfänger-Themen 3
G File up-/ und download Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
I Dateien aus dem Resource Folder laden Java Basics - Anfänger-Themen 2
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
A Zwei XML-Dateien Mergen Java Basics - Anfänger-Themen 14
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
LetsSebi Dateien werden nicht in Zip gespeichert Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
MiMa log4j als separate Dateien in Schleife? Java Basics - Anfänger-Themen 6
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
S Lese- / Schreibfähigkeit von Dateien sicherstellen Java Basics - Anfänger-Themen 1
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
J Logging erzeugt zwei dateien.... Java Basics - Anfänger-Themen 7
A Dateien Verschieben Java Basics - Anfänger-Themen 1
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
E FTP Dateien hochladen Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
M "substring()" mit Dateien und Pfadangaben Java Basics - Anfänger-Themen 5
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
B Dateien aus dem "resource" - Folder kopieren in Verzeichnis Java Basics - Anfänger-Themen 9
B Kopieren von Dateien mit Adminberechtigungen Java Basics - Anfänger-Themen 14
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
G Messwerte in 2 Dateien schreiben Java Basics - Anfänger-Themen 20
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
J Dateien für anderen User "mitgeben" Java Basics - Anfänger-Themen 1
S Dateien mit Java verschieben Java Basics - Anfänger-Themen 6
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
E Dateien werden nicht gelöscht Java Basics - Anfänger-Themen 10
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
J *.sql Dateien in Java Java Basics - Anfänger-Themen 1
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben