Dateidownload

Status
Nicht offen für weitere Antworten.

zilti

Bekanntes Mitglied
Ich würde gerne mit Java eine Datei herunterladen. Ich habe es mit folgendem Code versucht, der jedoch nicht funktioniert, d.h. die Datei (es ist eine zip-Datei) wird fehlerhaft heruntergeladen:
Code:
	public void Download(String address)
	{
		try
		{
			// URL erzeugen
			String fileName = new String("map.zip");
			URL url = new URL(address);
			
			//BufferedWriter zum Schreiben der Daten
			BufferedWriter bw;
			
				// BufferedWriter erzeugen und Daten in eine Datei schreiben lassen
			bw = new BufferedWriter(new FileWriter(fileName));
			
			// BufferedReader zum Einlesen der Ressource
			BufferedReader rdr = new BufferedReader(new InputStreamReader(url.openStream()));
			
			// Speichern
			String line;
			while((line = rdr.readLine()) != null)
			{
				bw.write(line);
			}
			
			// Aufräumen
			bw.close();
			rdr.close();
		}
		catch (MalformedURLException e) { e.printStackTrace(); }
		catch (IOException e) { e.printStackTrace(); }
	}
Was muss ich tun, damit der Download korrekt abläuft?
 

mlux

Mitglied
Dein Fehler ist die Verwendung eines BufferedReader zum Auslesen des Streams. Der ist nur für Text gedacht und sollte nicht für Binärdaten verwendet werden (deine zip-Datei).
Nimm einfach den Inputstreamreader, den du da schon hast und lies darüber mit read() in der Schleife die Daten aus.
 

zilti

Bekanntes Mitglied
Also, ich habs jetzt mal so:
Code:
	public void Download(String address)
	{
		try
		{
			// URL erzeugen
			String fileName = new String("map.zip");
			URL url = new URL(address);
			URLConnection connection = url.openConnection();
			
			//BufferedWriter zum Schreiben der Daten
			BufferedWriter bw;
			
				// BufferedWriter erzeugen und Daten in eine Datei schreiben lassen
			bw = new BufferedWriter(new FileWriter(fileName));
			
			// BufferedReader zum Einlesen der Ressource
			BufferedReader rdr = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			
			// Speichern
			String line;
			while((line = rdr.readLine()) != null)
			{
				bw.write(line + '\n');
			}
			
			// Aufräumen
			bw.flush();
			bw.close();
			rdr.close();
		}
		catch (MalformedURLException e) { e.printStackTrace(); }
		catch (IOException e) { e.printStackTrace(); }
	}
Es geht jedoch immer noch nicht?
 

zilti

Bekanntes Mitglied
Wie muss ich es denn machen, damit es funktioniert?
Hab im ganzen WWW auch mit Google nirgends ein Beispiel gefunden...
 

zilti

Bekanntes Mitglied
Hab jetzt folgenden Code gefunden, mit dem es funktioniert:
Code:
    public static void download(String address, String localFileName) { 
        OutputStream out = null; 
        URLConnection conn = null; 
        InputStream  in = null; 
        try { 
            URL url = new URL(address); 
            out = new BufferedOutputStream( 
                new FileOutputStream(localFileName)); 
            conn = url.openConnection(); 
            in = conn.getInputStream(); 
            byte[] buffer = new byte[1024]; 
            int numRead; 
            long numWritten = 0; 
            while ((numRead = in.read(buffer)) != -1) { 
                out.write(buffer, 0, numRead); 
                numWritten += numRead; 
            } 
            //System.out.println(localFileName + "\t" + numWritten); 
        } catch (Exception exception) { 
            exception.printStackTrace(); 
        } finally { 
            try { 
                if (in != null) { 
                    in.close(); 
                } 
                if (out != null) { 
                    out.close(); 
                } 
            } catch (IOException ioe) { 
            } 
        } 
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Dateidownload Client-Server (jsp) Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben