Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    scrivere output stream in variabile String



    ho una funzione che mi restituisce del testo scrivendolo direttamente in un output stream...


    elencoMessaggio[i].writeTo(System.out);

    invece io vorrei poter assegnare il contenuto dell'output stream ad una variabile String e poi poterci lavorare con comodo...

    si può fare ????
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Certo che si può fare.
    Puoi, ad esempio, costruire un ByteArrayOutputStream: è una classe che rappresenta uno Stream di Output verso un buffer, un array di byte.
    Dall'array di byte costruisci semplicemente la String.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Ci provo !!! grazie della dritta
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ma... ma... è lentissimo !!!!!!!!!!!!!!!!!!!!!

    codice:
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    String contenutoMessaggio = "";
    elencoMessaggio[i].writeTo(bout);
    String testoMessaggio = getArrayByte2String(bout.toByteArray());
    
    
    /** FUNZIONE PER LA CONVERSIONE DA ARRAY DI BYTE A STRINGA */
    public String getArrayByte2String(byte[] id) {
    		
    	try{
    		String readableId = "";
    		for ( int i = 0; i < id.length; ++i ) {
    			readableId += (char)id[i];
    		}
    		return readableId;
    	}catch(Exception e){
    		return "";
    	}
    }
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ehm... per creare un oggetto String a partire da un array di byte c'è già il costruttore della classe String:
    codice:
    public String(byte[] bytes)
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ops...

    ora provo... ma mi sa che è veloce uguale...
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    oks... ora è moooolto più veloce, anche se non ho capito il perchè di sta differenza.. non fanno la stessa cosa ??? !!!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    No. Sono sono la stessa cosa: l'operatore + per le stringhe comporta la creazione, ogni volta, di un nuovo oggetto String.
    Richiamare il costruttore di String, invece, permette alla JVM di creare un solo oggetto String che, internamente, contiene tutti i byte della tua stringa.

    Giusto per aggiungere informazioni, questo è quello che viene fatto dalla classe String passando un array di byte (codice originale Sun):
    codice:
        public String(byte ascii[], int hibyte, int offset, int count) {
    	checkBounds(ascii, offset, count);   // Controlla che l'array non sia vuoto e che i limiti siano corretti.
    
            char value[] = new char[count];
            this.count = count;
            this.value = value;
    
            if (hibyte == 0) {
                for (int i = count ; i-- > 0 ;) {
                    value[i] = (char) (ascii[i + offset] & 0xff);
                }
            } else {
                hibyte <<= 8;
                for (int i = count ; i-- > 0 ;) {
                    value[i] = (char) (hibyte | (ascii[i + offset] & 0xff));
                }
            }
        }
        ...
        public String(byte bytes[]) {
    	this(bytes, 0, bytes.length);
        }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    capito, grazie 1000
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

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.