Podmiana wartości w pliku

0

Witam, mam pytanko odnośnie funkcji Scanner służącej do czytania pliku. Mianowicie czy ma ona może opcję zapamiętywania miejsca z którego odczytała daną wartość?? Chciałbym bowiem najpierw przeglądać plik w celu znalezienia danej frazy tj w moim programie(najpierw szukam nazwy użytkownika potem przechodzę do następnej lini i wyszukuję w lini odpowiednio "wygrane:", "przegrane:" i "rozegrane:" i chciałbym podmieniać te wartości np z 0 na 1 itd.Wiem że istnieje sposób w którym zapisuje sie cały tekst z pliku do bufora i podmienia każdą podaną wartość na inną a następnie zapisuje się to w innym pliku tekstowym albo po prostu nadpisuje sie cały plik tekstowy.Niestety taka opcja nie była by dobra dla mojego programu bo wtedy kazdemu użytkownikowi zmienię wynik, a tu nie o to chodzi.:(

tutaj kod który aktualnie mam do wyszukiwania danej frazy i zapisywania do scannera wartości:

 int wygrane;

         FileInputStream fis = null;
        try {
            fis = new FileInputStream("Profile.txt");
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Sound.class.getName()).log(Level.SEVERE, null, ex);
        }
        
Scanner skanuj = new Scanner(fis);//do skanowania nazwy


while (skanuj.hasNext()){

txtn = skanuj.next();

if (txtn.equals(gracz)){
System.out.println(txtn);
System.out.println(gracz);//dziala

skanuj.nextLine();

wyg=skanuj.findInLine("wygrane: ");


if(wyg.equals("wygrane: "))
{
    wyg=skanuj.next();
System.out.println("Do tej pory miałeś: "+wyg+" wygranych rozgrywek");

wygrane=Integer.parseInt(wyg);

wygrane++;
wyg=String.valueOf(wygrane);

  try (FileOutputStream s = new FileOutputStream("Profile.txt",true)) {
               s.write(wyg.getBytes());
           }
         catch (IOException ex) {
        Logger.getLogger(Gra.class.getName()).log(Level.SEVERE, null, ex);
        System.out.print("Nie znaleziono pliku");
    }

I urywek pliku tekstowego:

6 8 nazwa: krisu1 hasło: takietam
 wygrane: 0 przegrane: 0 rozegrane: 0 założone: Pn sie 25 03:04:41 CEST 2014
5 5 nazwa: kaziu hasło: gaziu
 wygrane: 0 przegrane: 0 rozegrane: 0 założone: Pn sie 25 03:05:00 CEST 2014
9 5 nazwa: takiesamo hasło: takie
 wygrane: 0 przegrane: 0 rozegrane: 0 założone: Pn sie 25 03:05:16 CEST 2014

Dzięki wielkie za jakieś podpowiedzi. Chętnie wysłucham jak ktoś ma jakiś inny pomysł na podmianę tych wartości.Pewnie problem okaże się banalny ale już cały dzień nad tym myślę i nic mi do głowy racjonalnego nie przychodzi bo gdy próbuje zapisać cokolwiek to zawsze nadpisuje na samym końcu pliku a mnie interesuje tylko podmiana jednej wartości.

0

A nie możesz po prostu wczytać całego pliku, przekonwertować na swoją strukturę danych (np. mapa, gdzie kluczem jest nazwa użytkownika), zmienić co tam chcesz i ponownie wszystko zapisać do pliku?

0
  1. Użyj normalnego formatu pliku, jakiegoś XMLa chociażby a nie kombinuj z parsowaniem takiego śmiesznego formatu.
  2. Generalnie nie da się "podmieniać" wartości w pliku. Jak zamiast 9 wpisałbyś 10 to skasowałbyś jeden znak który był za 9 ;]
0

hmmm to muszę pomyśleć który sposób wybrać, właśnie miałem jakaś nadzieję że jest jakiś sposób by tylko wybiórczo podmienić...a to z przykładem 9 i dziesiątki to wiem tylko że wtedy może jakby istniała taka funkcja to by sobie pobierała długość takiej tablicy znaków i gdyby wstawiana "nowa" wartość miałaby więcej znaków to by po prostu przesuwała wszystkie znaki znajdujące się za tym który wycieliśmy o ileś tam miejsc.No cóż szkoda ale wolałem sie zapytać niż zmieniać nie potrzebnie to co sobie wymysliłem. Dzięki wielkie za pomoc:)

Ale w takim razie chyba zrobię tak że wszystkie wyniki będę zmieniał w bazie danych którą i tak muszę też mieć.A pod koniec działania programu wszystkie informacje z bazy będą pobierane i zastąpię stary plik tekstowy na ten z nowymi danymi po prostu :)

0

Skoro masz bazę danych to po co w ogóle ten plik? o_O

0

Widzisz takie wymogi na uczelniach ze musi być i baza danych i plik tekstowy.A po co ?? Przypuszczam że po to żebyśmy się wykazali że potrafimy pracować i na tym i na tym. Chociaż mnie się wydaję że baza w zupełności by mi wystarczyła w tym projekcie. No ale cóż pół większe już mam to nie będę dyskutował tylko zrobię wszystko do porządku tak jak sobie tego wykładowca, czy w przyszłości pracodawca będzie życzył :)

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