Metoda wczytująca dane z pliku do listy

0

Witam
Chcialbym napisac metode odczytzpliku() ktora odczyta z pliku raport.txt dane a nastepnie zapisze je do listy. Wie ktos moze, jak nalezy napisac ja zeby dzialala?

package obsluga1;
import java.io.*;
import java.util.*;

class Obsluga1 {
  public Scanner wej = new Scanner(System.in);
  public List<pracownik> pracownicy = new ArrayList<pracownik>();
   
  public static void main(String args[]) {
    new Obsluga1();
  }

  public Obsluga1() {
    this.menu();
  }
  public void menu() {

    System.out.print("a. Wyswietl wszystkich pracownikow\n"
		    +"b. Dodaj pracownika\n"
		    +"c. Daj podwyzke dla pracownikow\n"
		    +"d. Przenies pracownika na urlop\n"
		    +"e. Zapisz do pliku raport\n"
                    +"f. Usuniecie pracownika\n"
		    +"x. Zakoncz program\n");
		    this.cmd();
  }

  public void cmd() {
    System.out.print("#:");
    String prompt = wej.nextLine();

    if(prompt.equals("a")) this.wyswietlWszystkich();
    else if(prompt.equals("b")) this.dodaj();
    else if(prompt.equals("c")) this.dajPodwyzke();
    else if(prompt.equals("d")) this.przeniesUrlop();
    else if(prompt.equals("e")) this.raport();
    else if(prompt.equals("f")) this.usuwanie();
    else if(prompt.equals("x")) System.exit(0);
    else this.error();
    
    this.cmd();
  }

  public void error() {
    System.out.println("Wybrano niepoprawna opcja!");
  }
}

.
.
.
/* dalsza czesc kodu - metody */
.
.
.

public void odczytzpliku() {
  String nazwaPliku = "raport.txt";
  ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(nazwaPliku)));
  try {
      
       in.close();	
      }
       catch (FileNotFound err) {
      System.out.println(err.getMessage());
     }
  } 

}

class pracownik {
  public String imie;
  public int pensja;
  public boolean urlop;
  public static int Nr_pracownika = 10;

  public pracownik(String iImie, int iPensja, boolean iUrlop) {
    this.imie = iImie;
    this.pensja = iPensja;
    this.urlop = iUrlop;
  }
}

Natomiast raport.txt wyglada tak:

1 : maciej pensja: 1400 urlop: true
2 : tomek pensja: 2000 urlop: false
1

Na pewno tak

1 : maciej pensja: 1400 urlop: true
2 : tomek pensja: 2000 urlop: false

a nie tak?

1: maciej pensja: 1400 urlop: true
2: tomek pensja: 2000 urlop: false

Rozwiązanie dla drugiej wersji:

try
{
     Scanner sc = new Scanner(new File("raport.txt"));
     while(sc.hasNextLine())
     {
           String line = sc.nextLine();
           Scanner sc2 = new Scanner(line);
           sc2.next();
           String imie = sc2.next();
           sc2.next();
           int pensja = sc2.nextInt();
           sc2.next();
           boolean urlop = sc2.nextBoolean();
           pracownicy.add(new pracownik(imie,pensja,urlop));
     }
     sc.close();
}
catch(FileNotFoundException e)
{
     System.out.println("Plik raport.txt nie istnieje");
}

catch(Exception e)
{
     System.out.println("Plik raport.txt jest niedostępny");
}
0

bogdans pierwsza wersja, poniewaz moja metoda zapisu do pliku wyglada tak:

public void raport() {
    try {
      PrintWriter raport = new PrintWriter("raport.txt");
      for (int i=0, j=1; i<pracownicy.size(); i++, j++) {
	  raport.println(j+" : "+ pracownicy.get(i).imie+ " pensja: "+pracownicy.get(i).pensja+" urlop: "+pracownicy.get(i).urlop);
	}
      raport.close();
      System.out.println("Wyeksportowano raport do pliku"); 
    }
    catch (IOException err) {
      System.out.println("blad podczas zapisu pliku");
    }

  }

Zmienilem u siebie kod i twoj sposob dziala. Wielkie dzieki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1