kostenloser Webspace werbefrei: lima-city


Datei-Kopierprogramm

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    pueschel

    pueschel hat kostenlosen Webspace.

    Ich wollte ein einfaches Kopierprogramm zum Kopieren von Daten aller Art aus dem Internet programmieren
    Mein Quelltext sieht so aus:
    import java.io.*;
    import java.net.*;
    
    public class download
    {
      public static void main(String args[])
      {
        try
    	{
    	  URL url = new URL("http://www.pueschel.lima-city.de/kopf.gif");
    	  
    	  BufferedInputStream quelle = new BufferedInputStream(url.openConnection().getInputStream());
    	  BufferedOutputStream ziel = new BufferedOutputStream(new FileOutputStream("test.gif"));
    	  
    	  int gelesen;
    	  
    	 
    	 while((gelesen = quelle.read()) != -1)
    	 {
    	   ziel.write(gelesen);
    	 }
    	 
    	 quelle.close();
    	 ziel.close();
    	} catch(Exception e)
    	{
    	System.out.println("Fehler: "+e);
    	}
      }
    }

    Bei manchen Dateien klappt es(Text)
    Bei Bildern (wie dieses) klappt es nicht.
    Was mache icht falsch?
    Warum wird das Bild nicht eins zu eins kopiert?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. c****s

    Sehr seltsam.

    Hab deinen code gerade ausgeführt und läuft wie ne Eins. Die Zieldatei ist am Ende ein gültiges GIF und stellt "SUPER TOP SPIELE" dar. Am code liegt es also nicht, dass es bei dir nicht läuft.
  4. Autor dieses Themas

    pueschel

    pueschel hat kostenlosen Webspace.

    Oh, plötzlich funktioniert es auch, bestimmt habe ich nur bei den verschiedenen Dateien die ich zum Testen benutzt habe
    einfach vergessen die Ausgangsdatei zu ändern(z.b. Eingang: http://.../abc.pdf Ausgang test.gif).
    Dieser Fehler ist mir beim nochmaligen Ausprobieren auch passiert.
  5. ich könnte mir nur folgendes vorstellen :

    1.) wie du gesagt hast : fehlerhafte dateinamenerweiterung
    2.) falsche daten *z.B. wenn der server ne fehlermeldung mit MIME plain/text oder plain/html sendet und du versuchst diese als bild oder formatted/anything zu speichern
    3.) server-fehler
    4.) simpler denkfehler

    ich würde das hier sowiso GANZ anders lösen ...

    1.) ich würde anstatt URL lieber nativen SOCKET verwenden ...
    2.) ich würde um gotteswillen keine BUFFEREDSTREAMS verwenden sondern dierekt native STREAMS ... diese liefern sogar 8-bit konstant ... und müssen nicht wie BUFFERED darauf warten bist der buffer *meist 16-bit* vollgeschrieben ist bevor sie die daten frei geben
    3.) ok . .es ist mühselig .. aber bei meiner variante würde man auch den HTTP/1.1-Header mit empfangen und könnte aus diesem gleich MIME-TYPE und File-Length auslesen *bei besonderen servern und verfahren auch CRC-32 prüfsumme sowie das ganz bandbreiten schonender als GZIP oder BZ2 komprimierte variante ...
    4.) dessweitern würde ich noch eine GUI programmieren um den speicherplatz sowie den namen auszuwählen ... den daten-typ *also die dateinamenerweiterung* sollte dann jedoch fest sein und bei GZIP / BZ2 daten gleich von deiner app dekomprimiert oder halt als GZIP / BZ2 archiv gespeichert werden ...

    wenn du willst könnte ich mich an sowas mal ransetzen und dir einen relativ einfachen code zusammen basteln *einfach im sinne von : alle exception bis main thrown und main throwed dann selber an die console ... GUI einfach nur die elemten mit einem GRIDBAG in logische struktur bringen .... bytecode nicht "sauber" geproggt sowie keine bugs entfernt ...
  6. Autor dieses Themas

    pueschel

    pueschel hat kostenlosen Webspace.

    Ich habe auch so etwas schon mal probiert, habe aber
    immer anstatt des Bildes die Meldung bekommen, dass
    die IP-Adresse ... nicht gefunden wurde.
    Zeig du mir mal wie ich einen Socket zu einer bestimmten Adresse aufstelle und
    wie du das ausliesst.


    Und noch was,
    ich möchte bei meinem Downloader die Größe im voraus wissen,
    da der Empfang bei großen Dateien lange dauert und ich erst eine
    Fortschrittsanzeige brauche, damit der Nutzer auch weiß, wie lange das noch dauert.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!