Originariamente inviato da furiacecaj83
codice:
while ((a=lettoreDelFile.read())!=-1)
{
    stringa+=(char)a;
Ci sono 2 grossi problemi:
a) Stai leggendo 1 carattere per volta.
b) Usi la concatenazione delle stringhe per aggiungere 1 carattere.

Tutto questo è pesantissimo. A dispetto della semplicità con cui si fa la concatenazione, sotto sotto è più complicato, viene istanziato un StringBuffer (o StringBuilder da Java 5), viene fatto l'append di 'stringa' e poi di 'a', quindi viene istanziato un nuovo String ottenuto dal toString() del buffer e il buffer sarà poi reso eleggibile per il g.c. perché non più usato.

E tutto questo ad ogni ciclo e la cosa si appesantisce man mano che la dimensione della stringa aumenta!

No, usa espressamente un StringBuffer/StringBuilder, leggi a "blocchi di char" (con un piccolo array char[] di buffer temporaneo) e poi appendi ogni blocco nel StringBuffer/StringBuilder.
Alla fine puoi ottenere un String ma a seconda di cosa devi fare puoi farne a meno e usare direttamente lo StringBuffer/StringBuilder.