Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    [java] InputStreamReader solo se J2SDK?

    Ciao a tutti, ho fattu un'applet (http://www.akkattp.com/classes/AKKATTPproxy.html ) che mi legge il risultato di una pag asp, e sul mio pc funziona, solo che ho notato che su un pc senza la VM aggiornata il tutto non si vede.
    Mi sapete aiutare a cambiare queste righe di codice (penso sia li l'errore!

    ....

    URL url = new URL(host);
    inputstream = (url).openStream();
    in = new BufferedReader(new InputStreamReader(inputstream));
    String line;

    while ((line = riceviMessaggio())!=null){
    ....
    }

    private String riceviMessaggio() {
    String line = null;
    try {
    line = in.readLine();
    } catch (IOException e) {}
    return line;
    }
    Avrei bisogno di usare una classe (pensavo ad InputStream) più vecchia ma non so ritornare una stringa da questa.
    Sapete aiutarmi?
    Grazie

  2. #2
    ...aiuto please...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    30
    Ciao,
    tutte le classi che stai usando esistono gia' dal jdk 1.1 ...
    Possibile che sia un problema di VM !?

    Comunque se vuoi leggere lo stream diversamente puoi fare cosi':

    URL url = new URL(host);
    inputstream = (url).openStream();

    int aByte= -1;
    ByteArrayOutputStream baos= new ByteArrayOutputStream();

    try{
    while((aByte= inputSTream.read())!= -1){
    baos.write(aByte);
    }
    }catch(IOEXception ex){
    }

    String aSTring= new String(baos.toByteArray());
    System.out.println(aString);


    Certo, non e' bufferizzato, leggi byte per byte, e' bloccante, pero' puoi provare


    Ciao,
    rob

  4. #4
    con la JVM di Microsoft non funziona l'applet restituendo un errore Class Not Found!!
    Con quella di Sun tutto liscio...

  5. #5
    me n'ero accorto anch'io... il problema sta proprio li... devo trovare un qualcosa che vada dovunque.
    Come si fa a sapere che vm ha il browser winzozz? IE 4.0 che VM usa?

  6. #6
    non ti saprei dire, per me cmq è un problema della JVM di Microsoft che non si è aggiornata...
    purtroppo non so dirti come rilevare il tipo di JVM installata... magari nel registro di Windows o in qualche file sono contenute delle info riguardo alla versione.

  7. #7
    mi puoi testare questo link (è quello con il codice per le VM più vecchie)
    http://www.akkattp.com/classes/AKKAttpRemote.htm

    roberman non sai se è possibile bufferizzare quel tuo codice?
    Che differenza ce sui 2 sistemi (buffer si/no) sulla lettura di circa 3000 caratteri secondo te?

  8. #8
    ok con JVM di Sun, quella di Microsoft ormai l'ho buttata, adesso non ce l'ho su nessun pc...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    30
    puoi bufferizzarlo cosi':

    URL url = new URL(host);
    inputstream = (url).openStream();

    byte[] toRead= new byte[30000];

    try{

    int bytesLetti= inputStream.read(toRead);

    String aSTring= new String(toRead, 0, bytesLetti);
    System.out.println(aString);

    }catch(IOEXception ex){
    ex.printStackTrace();
    }


    In questo modo leggi il blocco di 30.000 caratteri in un colpo solo.
    Se ci fossero tanti thread che leggono, andrebbero in concorrenza per ogni byte letto, mentre in questo modo vengono "svegliati" solo quando l'array e' stato letto tutto...

    ciao,
    rob

  10. #10
    e se poi la stringa è più lunga di 30000 cosa succede la legge uguale?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.