Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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 ;)

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.

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.