In un mio programma java utilizzo uno StringBuilder per comporre una stringa,fin qui niente di strano...successivamente invoco un metodo per la lettura del contenuto di un file di testo...e a questo punto sorge il problema...vi posto in linea di massima cosa accade col codice:

codice:
public static String metodo (){
       StringBuilder sb=new StringBuilder ();
       ...
       sb.append (unaStringa);
       ...
       sb.append (altraStringa);
       ...
       String s=read (nomeFile , "UTF-8");
       sb.append (s);
       ...
       sb.append (ultimaStringa);

       return sb.toString();
}

public static String read(String fileName,String charSet){
		BufferedReader buffRead=null;
		StringBuilder strBuff=new StringBuilder();
		try{
			buffRead=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),charSet));
			String str;
			while((str=buffRead.readLine())!=null){
				strBuff.append(str+"\r\n");
			}
			buffRead.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		return strBuff.toString();
}
Alla fine del metodo "metodo ()" la stringa restituita dovrebbe essere "contenutoPrecedenteStringBuilder+ultimaString a"

mentre quello che avviene è che ultimaStringa sovrascrive partendo da sinistra il contenuto precedente dello StringBuilder...

perchè ho questo problema?come posso risolvere?

Ps. anche provando a fare alla fine "return sb.toString()+ultimaStringa;" avviene la sovrascrittura , ma non riesco a capire il perchè