Zum Inhalt springen

Probleme beim downloaden von Dateien


Empfohlene Beiträge

Geschrieben

Hallo Liebe Forenmitglieder,

ich hoffe sehr bei euch Hilfe zu finden.

Ich habe da so ein kleines Problem mit (wie sollte es auch anders sein) Java.

Erklärung:

Ich habe ein sehr simples Programm, das per Tastendruck für sich selbst nach Updates suchen kann. Dazu stelle ich auf einem ohost-server (ohost.de) eine file zur Verfügung, die das Programm downloaded, abspeichert und darin nach den nötigen informationen sucht.

Ungewollt hängt Java allerdings ein ÿ (mit ü-pünktchen!) ans Ende der Datei.

Derzeit hatte ich das Problem gelößt, das sich einfach einen buchstaben am Ende in eine neue Zeile geschrieben hatte... somit wurde das ÿ an den Buchstaben gehangen und nicht an irgendwelche relevanten Werte

siehe:

updateDateiName2=vokabeln.voc

updateZielPfad1=Eng/

updateZielPfad2=Ita/

pÿ

Dieses ÿ muss allerdings jetzt weg. Da ich bei neueren Versionen ganze .class'es ersetzen muss, kann ich nicht mehr so ienen Pfusch machen.

Verständlicherweise kommt die Datei dann Kaputt auf dem PC an ( mit dem ÿ halt)

Hoffe, ihr könnt mir weiterhelfen Wäre euch zutiefst dankbar. Hier mal noch mein Downloadsource:

public static void downloadFile(String url, String relativerPfad, boolean isRekursiv){

try {

url.replaceAll("%20", " ");

URL u = new URL(url);

URLConnection urlc = u.openConnection();

InputStream is = urlc.getInputStream();

java.io.BufferedInputStream bis = new java.io.BufferedInputStream(is);

File f = new File(Haupt.absoluterPfad+relativerPfad);

OutputStream os = new FileOutputStream(f);

int ch;

do{

os.write(ch = bis.read());

}while (ch != -1);

os.close();

is.close();

}catch(MalformedURLException e){

e.printStackTrace();

}catch (IOException e){

e.printStackTrace();

}

MfG Belkner, Sebastian

P.S.: habe schon so einige sachen probiert z.b.:

substring(),

while (ch != -1 && (char)ch != 'ÿ');

und diverse formatierungen der in-, und outputstreams..

half aber alles nichts

Geschrieben

Hallo,

auch unter der Gefahr, dass ich das jetzt nicht mehr richtig hinbekomme (ist schon spät):

do {

os.write(ch = bis.read());

} while (ch != -1);

Du schreibst immer ein Zeichen und brichst danach die Schleife ab. D.h. wenn ch = -1 ist dann schreibst Du es noch, und erst dann kommt die Prüfung durch while. Also entweder die Schleife so ändern:

while (!inputstream.eof)

os.write

HTH Phil

P.S.: Keine Garantie wegen Müdigkeit ;)

Geschrieben

Beachte folgendes bei der Handhabung von Streams:

1) Wenn Du keine "Text-Daten" (mit ensprechendem Encoding etc.) handhaben willst, nutze direkt den InputStream bzw. OutputStream

Du willst hier bytes lesen, und diese bytes (so, wie sie sind) wieder schreiben, oder?

In dem Fall das mit dem BufferedInputStream besser sein lassen.

2) Lege einen Puffer an, und lese bzw. schreibe nicht zeichenweise, denn das ist enorm langsam. Eher sowas in der folgenden Richtung:

byte[] buffer = new byte[1024];

int len = 0;

while (len > -1) {

    len = in.read(buffer);

    if (len > 0) {

        out.write(buffer,0,len);

    }

}

Siehe hierzu auch in der Insel das Kapitel über das Kopieren mit FileOutputStream und FileInputStream

Ich hoffe, die Hinweise helfen Dir.

Geschrieben

Hallo,

dankeschön für eure Hilfe. Nachdem ich flashpixx post las, war mir mein Fehler klar und hab dies umgeändert.

Jetzt funktioniert es endlich =)

Liebe Grüße

Belkner, Sebastian

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...