no chiede che sia fatto questo:

Quando il server riceve una richiesta, attiva un thread, chiamato Worker, fornendo la stringa
della richiesta di operazione ricevuta dal ClientThread;
5. Il Worker interpreta la stringa ricevuta e contatta FileWrapper per espletare la richiesta
(scrittura o lettura);
6. Il FileWrapper gestisce in parallelo le richieste per righe diverse del file, mentre gestisce in
mutua esclusione operazioni sulla stessa riga.
7. Quando il FileWrapper ha eseguito l'operazione, comunica al Worker l'esito: la riga letta oppure
la riga scritta;
8. Il Worker invia al ClientThread l'esito dell'operazione che ha ricevuto dal FileWrapper;

quindi il worker riceve la stringa s1+s2+s3, che sono rispettivamente s1= w o r, s2= n°riga, s3= stringa da scrivere in caso di w.....il worker scompatta lastringa e tramite w o r, richiama il metodo di FileWrapper WriteOnFile oppure ReadToFile, ma è qui che devono essere gestite le operazioni di scrittura e lettura......!!!

in lettura ho scoperto come fare, molto semplice.....

codice:
String lette = null;
	String esito=null;
	String rigatoRead=null;
	int i=0;
	while ((esito=raf.readLine())!=null){
		lette=raf.readLine();
		if (i==riga){ rigatoRead=lette;}
		i++;
	}
		
	return rigatoRead;
In scrittura potrei usare lo stesso metodo...contare praticamente il numero di letture fatte, e quando i arriva al numero di riga che voglio, effettuare la scrittura dove se è =null, scrive normalmente, altrimenti scrive con l'append