si, hai ragione. In fatti ho speso un po di tempo nel capire quale fosse la soluzione più adatta.
Quello che voglio fare:
Voglio che venga letta una pagina html che può essere anche un file di testo, ma che nei punti che dico io (nei collegamenti per intenderci) vada a scrivere delle stringhe precedentemente salvate.
Leggere riga per riga è un pò dispendioso, parliamo di più di 100 righe.
Ho invece pensato di leggere prima tutto il file e poi di riscriverlo in diverse parti tra cui verrano inserite le mie stringhe.

E' un po brigoso capire esattamente su quale carattere interrompere la scrittura, ma sembra funzionare correttamente.
codice:
char[] buffer = new char[10000];
							
							BufferedWriter index = new BufferedWriter(new FileWriter(path+"index.htm", true));
							BufferedReader sourceFile = new BufferedReader(new FileReader(templatePath+"index.htm"));
							
							sourceFile.read(buffer);
							index.write(buffer, 1, 2160);
							String logoPath = (String)session.getAttribute("logoPath");
							index.write(logoPath);
							index.write(buffer, 2161, 118);
							String title = (String)session.getAttribute("title");
							index.write(title);
							index.write(buffer, 2279, 300);
							
							Iterator iter = elementList.iterator();
							menuElement element = null;
							
							while(iter.hasNext()) {
							  element = (menuElement)iter.next();
							  
							}
							
							index.flush();
							index.close();
							sourceFile.close();
							session.removeAttribute("logoPath");
							session.removeAttribute("title");