# Download funtioniert nicht richtig.



## peedee (28. Aug 2004)

Hi, ich habe folgendes Problem:

das Programm soll mehrere Dateien (Binärdateien) runterladen und zusammenfügen (in der Datei temp.zip). Das funktioniert aber nicht wirklich, obwohl die Datei danach auch die richtige Größe hat. Nur ich weiß nicht, warum..
Wenn ich die Dateien einzeln runterlade und dann mit copy D1 + D2 + .. zursammenfüge, funktioniert es!

peedee


```
Text_Protokoll.setText("");
    URL dl = null;
    try { dl = new URL(Text_Hyperlink.getText()); }
    catch (MalformedURLException ex) { Text_Protokoll.setText("Fehler: Kein Hyperlink!"); return; }
    Text_Protokoll.setText("Beginne mit dem Download..\n");
    String Dateiname = Text_Hyperlink.getText();
    int Anzahl = Integer.parseInt(Dateiname.substring(Dateiname.length() -3));
    Dateiname = Dateiname.substring(0,Dateiname.length() -3);
    Text_Protokoll.append("Extrahiere Dateinamen: " + Dateiname + "\n");
    Text_Protokoll.append("Extrahiere Anzahl Dateien: " + Anzahl + "\n");
    FileWriter fw = null;
    try { fw = new FileWriter("temp.zip"); }
    catch (IOException ex2) { Text_Protokoll.setText("Fehler: Kann Datei nicht anlegen!"); }
    HttpURLConnection conn = null;
    int i = 1;  String tURL  = "";
    try {
      while (i != Anzahl + 1) {
        if (i >= 100) {tURL = Dateiname + i;}
        if (i < 100) {tURL = Dateiname + "0" + i;}
        if (i < 10) {tURL = Dateiname + "00" + i;}
        Text_Protokoll.append(tURL + "..");
        conn = (HttpURLConnection)new URL(tURL).openConnection();
        InputStream is = conn.getInputStream();
        StringBuffer rss = new StringBuffer();
        int len;
        byte[] b = new byte[1024];
        while ( (len = is.read(b)) != -1) {
          rss.append(new String(b,0, len));
        }
        fw.write(rss.toString());
        fw.flush();
        conn.disconnect();
        Text_Protokoll.append("ok\n");
        i = i + 1;
      }}
      catch (IOException ex1) { Text_Protokoll.append("Fehler!!!\n"); return; }
    try { fw.close(); } catch (IOException ex3){ return; }
    Text_Protokoll.append("Fertig :-)\n");
    Toolkit.getDefaultToolkit().beep();
```


----------



## Guest (29. Aug 2004)

Wenn es Binärdateien sind, dann warum liest Du die 
Daten in einen StringBuffer ein?
FileWriter ist auch nur für Textdateien gedacht.

Verwende am besten BufferedInputStream und BufferedOutputStream.


----------



## peedee (29. Aug 2004)

Vielen Dank für die schnelle Anwort.

Hat auf Anhieb funktioniert. Wie ich auf die Idee gekommen bin, das erst einmal in einen String umzuwandeln, weiß ich auch nicht..   

Viele Grüße
peedee


----------

