Witam mam do napisania prosty program w Javie na plikach używając strumieni który ma wykonywać poniższe czynności:

s - wyswietl wszystko wszystko od najmniejszej liczby pkt do najwiekszej
w - wyszkuiwanie uzytkownika
d - dopisanie na koncu nazwiska i liczby
. - zakonczenie pracy

przykładowy plik.txt
nowak 433
kowalski 3423
wisniewski 44

Udało mi się napisać wszystkie rozkazy, ale nie wiem jak wyświetlić posortowane dane z plik.txt wg liczby punktów... sortowanie miało być polifazowe (rodzaj sortowania zewnętrznego) ale nie wiem jak to zrobić, byłbym wdzięczny za pomoc w zrobieniu chociaż najprostszego sortowania... oto mój kod:

import java.io.*;

class Strumienie{
    public static void main(String[] args) throws IOException{ //wyrzuci wyjatek na konsole
        
		String rozkaz=""; //deklarujemy zmienna rozkaz
		while(!rozkaz.equals(".")){ //sprawdzamy czy zmienna rozkaz jest . (zakonczenie programu)
            	
            BufferedReader odczyt = new BufferedReader(new FileReader("plik.txt")); //odczyt z plik.txt
       		PrintWriter zapis = new PrintWriter(new BufferedWriter(new FileWriter("tmp.txt"))); //zapis do tmp.txt        
			BufferedReader klawiatura = new BufferedReader(new InputStreamReader(System.in)); //strumien klawiatura
            	
            System.out.println("s - wyswietl zawartosc pliku od najmniejszej do najwiekszej liczby pkt");
			System.out.println("d - dodaj nowy wpis");
			System.out.println("w - wyszukaj nazwisko w pliku");
			System.out.println(". - wyjdz z programu");
				
            System.out.println("Wybierz polecenie: ");
            rozkaz = klawiatura.readLine(); //wprowadzamy poprzez strumien rozkaz z klawiatury     
            
 
            //wyswietlanie wszystkich wpisow (musi byc posortowane wg liczby pkt najlepiej podzielic funkcja split)
           	if(rozkaz.equals("s")) {
           		System.out.println(); //pusta linia
           		System.out.println("Lista nazwisk:");
				String przegladanie = "";
				while(przegladanie != null){
					przegladanie = odczyt.readLine();
					if(przegladanie != null) //wyswietlamy dopoki nie ma wartosci pustej
						System.out.println(przegladanie);
				}
				System.out.println();//pusta linia	
			} //koniec wyswietlania
            
            
            //dodawanie wpisu 
           	if(rozkaz.equals("d")) {
           		System.out.println(); //pusta linia
           		System.out.println("Podaj nazwisko i pkt: ");
				String dopisz = klawiatura.readLine();
				String przegladanie = ""; //zmienna do przegladania pliku
				
				//kopiujemy dane z plik.txt do tmp.txt (poniewaz gdy tego nie zrobimy to przy dodawaniu nowego wpisu plik.txt wyczysci aktualne dane)
				while(przegladanie != null){
					przegladanie = odczyt.readLine(); //odczyt z plik.txt
					if(przegladanie != null) //dopoki nie ma wartosci pustej zapisujemy do tmp.txt
						zapis.println(przegladanie); //zapis do tmp.txt
				}	
				zapis.println(dopisz); //dopisujemy na koncu pliku tmp.txt dane wprowadzone z klawiatury
					
				//klawiatura.close();
				//baza.close();
				zapis.close(); //zamykamy strumien zapisu do tmp.txt
					
				BufferedReader odczyt2 = new BufferedReader(new FileReader("tmp.txt")); // odczyt z tmp.txt
				PrintWriter zapis2 = new PrintWriter(new BufferedWriter(new FileWriter("plik.txt"))); // zapis do plik.txt
				
				przegladanie = ""; //czyscimy zmienna przegladanie
				//kopiujemy dane z tmp.txt do plik.txt
				while(przegladanie != null){
					przegladanie = odczyt2.readLine(); //odczyt z tmp.txt
					if(przegladanie != null) //dopoki nie ma wartosci pustej zapisujemy do plik.txt
						zapis2.println(przegladanie); //zapis do plik.txt
				}
				//baza2.close();
				zapis2.close(); //zamykamy strumien zapisu do plik.txt
				System.out.println("Dodano wpis.");
				System.out.println(); //pusta linia
			} //koniec dodawania wpisu
            
             
           	//wyszukiwanie uzytkownika
           	if(rozkaz.equals("w")) {
           		System.out.println(); //pusta linia
           		System.out.println("Podaj nazwisko: ");//wprowadzamy z klawiatury szukane nazwisko
           		String szukaj = klawiatura.readLine(); //zapisujemy do zmiennej szukaj w strumieniu klawiatura
           		
           		String przegladanie = odczyt.readLine(); //zmienna do przegladania pliku
           		String[] x = przegladanie.split(" "); //tworzymy tablice do przechowywania nazwiska i pkt
           		
           		while(!szukaj.equals(x[0]) && przegladanie != null){
           			przegladanie = odczyt.readLine();   
           			if(przegladanie != null)
           				x = przegladanie.split(" ");
           		} 
           		if(przegladanie == null)
           			System.out.println("Nie ma takiego nazwiska");
           		else
           			System.out.println("Znaleziono uzytkownika: " + x[0] + " " + x[1]);
           		System.out.println(); //pusta linia
           	} //koniec wyszukiwania
                
                  
			//wyjscie z programu
			if(rozkaz.equals(".")) {
				System.out.println(); //pusta linia
				System.out.println("Wlasnie opuszczasz program...");
			} //koniec wyjscia z programu
                

		} //koniec programu wywolany przez .

    } //koniec main
   
} //koniec klasy