Download funtioniert nicht richtig.

  • Themenstarter Themenstarter peedee
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

peedee

Gast
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

Code:
    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();
 
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.
 
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
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben