Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giuseppe500 Visualizza il messaggio
    io vorrei recuperare direttamente la stringa unzippata(del primo e unico file che avro') e senza salvare il file e ho fatto una prova con lo StringBuffer e l'append utilizzando il costruttore della stringa che prende byte e utf-8.
    Il problema è che la stringa risultante non è completa, dove sbaglio?
    Innanzitutto un codice tipo:

    buff.append(new String((byte[])data, "UTF-8"));

    non è proprio correttissimo. Il punto è che in UTF-8 un carattere può essere rappresentato con più byte. Creare stringhe distinte da blocchetti di byte senza sapere a che punto eventualmente interrompono una sequenza multi-byte può essere un problema per il decoder interno. Anche se nel tuo caso specifico non ci fossero questi problemi, è comunque una cosa non molto bella e pulita.

    Se il documento sai a priori che non è molto grosso, puoi "buttare" i byte a blocchi dentro un ByteArrayOutputStream, poi alla fine crei un String con tutto l'array di byte indicando il charset che ovviamente deve essere coerente con il contenuto del documento.

    Altrimenti, vale in generale e sarebbe anche meglio, incapsulare il zin in un InputStreamReader (specificando charset), poi leggere a blocchi di char e buttarli nel StringBuffer.

    Quote Originariamente inviata da giuseppe500 Visualizza il messaggio
    ho usato uno StringBuffer perchè ho letto che è thread safe invece dello StringBuilder ma il problema non è li'.
    Qui non centra la thread-safety ... il tuo StringBuffer è "locale", non è condiviso tra thread! Quindi non centrano questioni con i thread.
    Ultima modifica di andbin; 23-11-2013 a 16:44
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.