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.