Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    28

    [Java] Riutilizzo di un buffered reader

    Sto creando una applet Java che leggendo da remoto un file di testo, contenente numeri, ne ricava un disegno.

    Dato che i files sono lunghi, 700k-1M, devo avere una copia in memoria del BufferedReader o dell'InputStream che mi vengono passati dalla lettura dell'URL.
    Non posso utlizzare il BufferedReader.mark(int x) perchè x è troppo piccola, questo mi consentirebbe di resettare il BufferedReader e rileggerlo quante volte voglio.
    Allo stesso tempo creare una stringa con il file di testo dentro è improponibile dati i tempi che occorrono poi per trasformare un silmile file in numeri.

    C'è un modo per riutilizzare un BufferedReader dopo che lo si è letto?
    Se no c'è un modo di copiare i dati che stanno nel BufferedReader in un'altro BufferedReader per poi rileggerli a comodo?!

    Grazie, Ebolo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    28
    Se mai a qualcuno potesse servire ho risolto nel seguente modo:

    Ho copiato dentro lo StringWriter il contenuto del BufferedReader in ingresso:
    public static StringWriter Getdata(String Indirizzo) {
    String result="";
    boolean check1 = false, check2 = false;
    StringWriter mem= new StringWriter();
    BufferedReader in=null;
    PrintWriter copy = new PrintWriter(mem);

    try {
    URL url = new URL(Indirizzo);
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);

    in = new BufferedReader(
    new InputStreamReader(
    conn.getInputStream()));
    String inputLine;

    while ((inputLine = in.readLine()) != null) {
    copy.println(inputLine);
    }

    in.close();
    return mem;

    } catch (MalformedURLException _error) {
    System.out.println("URLException: " + _error.getMessage());
    System.exit(1);

    }

    catch (IOException _error) {
    System.out.println("IOException: " + _error.getMessage());
    System.exit(1);
    }

    return null;


    }
    Dopo questo ho usato la risposta al metodo per ottenere una copia di un BufferedReader appena letto:
    StringWriter buffer = new StringWriter();
    buffer = GetResultFromWeb.Getdata(Hostname);

    try {
    Reader bufferread = new StringReader(buffer.toString());
    BufferedReader nPbr = new BufferedReader(bufferread);
    length = MyMethodReader(nPbr);
    nPbr.close();
    } catch (IOException _error) {
    System.out.println("IOException: " + _error.getMessage());
    System.exit(1);
    }
    In questo modo ho conservato lo stream che mi interessava dentro buffer e l'ho potuto rileggere quante volte ho voluto applicando il try catch che ho riportato quando serviva.

    Ebolo.

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.