Beh... questo pezzo di codice č sicuramente sbagliato:
codice:
while((line.indexOf("<drug-interaction>"))==-1){   //scorro fino ad avere un drug

   if(tot-position==0)
      System.exit(0);        //FINE FILE, DRUG CONTROLLATI

   line=reader.readLine();
						
   //position=position+line.length();
}
Supponendo di essere arrivati all'ultimo "<drug-interaction>", cosa succede DOPO? Succede che il file continua ad essere letto fino alla fine. Quindi verrą eseguita ancora la riga di codice della lettura ( line = reader.readLine() ), ma a questo punto, la stringa "line" non conterrą mai pił il tag "<drug-interaction>", quindi tu continuerai ad iterare su quel while. Quando anche l'ultima riga del file č stata letta, l'invocazione successiva di readLine() ritornerą "null" ecco il tuo NullPointerException: sei ancora dentro al while e, anche dopo l'ultima readLine() continui a verificare se line.indexOf("..."), ma "line" ora č nullo perchč il file č finito.

Non č quello il modo di controllare le letture dal file: quando si legge un file in modo iterativo si deve sempre controllare, dopo ciascuna readLine() che la riga letta non sia nulla.


Ciao.