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