Sarabbe meglio che evitassi di aprire due thread uguali, se vedi che non ottieni risposta con il primo, puoi sempre includere una altro messaggio (anche vuoto) per farlo tornare in cima alla lista.
Un' altra cosa: inserici il tuo codice tra i tag [ CODE ] e [ /CODE ] (senza spazi), in tal modo codice risultera' formattato e piu' semplice da comprendere.

Detto questo ti includo la soluzione al problema. Ci sono almeno due errori gravi, in quello che hai scritto tu: devi imparare ad usare la gestione degli errori con try e catch, visto che e' un meccanismo piuttosto potente, ti consente di scrivere codice piu' elegante e piu' robusto.

codice:
import java.io.*;
import java.util.*;

public class Registro {
	public static void main(String args[])throws Exception {
		//Leggo dal file i dati che mi servono
		File myFile = new File("./studenti.txt");
		BufferedReader br = new BufferedReader(new FileReader(myFile));
		//Un vettore che sarà riempito di oggetti di tipo studente
		Vector v = new Vector();
	
		Studente allievo = Studente.leggi(br);
	
		while(allievo != null) {
			//Inserisco gli oggetti nel vettore
			v.addElement(allievo);
			System.out.println(allievo.getNome() + " " + allievo.getMedia() + " ");
			//Assegnazione che dovrebbe permettermi di uscire dal ciclo
			allievo = Studente.leggi(br);
		}
		try {
			//ricorda di chiudere i file
			br.close();
		} catch(IOException eIO) {
			eIO.printStackTrace(System.out);
		}
		//Scorro il vettore e dovrei stampare
		Enumeration enum = v.elements();
		while(enum.hasMoreElements()) {
			allievo = (Studente) enum.nextElement();
			System.out.println(allievo.getNome() + " " + allievo.getMedia());
		}
	}
}

class Studente {

	private String nome;
	private int voto;

	public Studente(String nome, int voto){
		this.nome = nome;
		this.voto = voto;
	}

	public static Studente leggi(BufferedReader br) throws Exception{
		String tmp = br.readLine();
		//Se il file arriva alla fine, esce dal metodo restituendo null
		if(tmp == null) return null;
		String nome = tmp;
		//Stessa considerazione di prima, se non c'e' il voto dopo il nome
		tmp = br.readLine();
		if(tmp == null) return null;
		int voto = Integer.parseInt(tmp);
		//inutile creare un oggetto solo per restituirlo
		return new Studente(nome, voto);
	}

	public int getMedia(){
		return voto;
	}

	public String getNome(){
		return nome;
	}
}
In questo modo funziona, se non capisci qualche correzione, chiedi pure.