Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
KZB
Člen
Avatar
KZB:28.1.2016 1:52

Zdravím, mohl by mi někdo poradit, jak v zápisu do textového souboru pomocí BufferedWriter zamezit znovu zapsání již jednou uloženého záznamu?

Můj konkrétní případ, kdy do "soubor.txt" ukládám položky "Název, Popis, Datum, Částka", jejichž hodnoty si ukládám z MySQL tabulky. Uložení souboru provádím pomocí JButtonu, na kterém volám požadovanou metodu. Ukládání funguje tak jak má, ale při opakovaném stisknutí se záznam uloží znovu. Tzn.pokud např.zmáčknu tlačítko 4x, uloží se mi požadovaný záznam 4x pod sebe. Lze nějak ošetřit, aby se uložil pouze jednou? Mockrát díky za případné rady.

 public void uloz(String sId){
         try (BufferedWriter bw = new BufferedWriter(new FileWriter("soubor.txt",true)))
{
        tID.setText(sId);
        bw.write("Název: " + db.getHodnotaSQL("select `nazev` from `databaze`.`tabulka` where `id` = '" + sId + "' ")+ "; ");

        bw.write("Popis: " + db.getHodnotaSQL("select `popis` from`databaze`.`tabulka`  where `id` = '" + sId + "' ")+ "; ");

        bw.write("Datum: " + db.getHodnotaSQL("select `datum` from `databaze`.`tabulka`  where `id` = '" + sId + "' ")+ "; ");

        bw.write("Částka: " + db.getHodnotaSQL("select `castka` from `databaze`.`tabulka`  where `id` = '" + sId + "' ")+ "; ");
        bw.newLine();
        bw.flush();
}
catch (Exception e)
{
        System.err.println("Do souboru se nepovedlo zapsat.");
}

      }
 
Odpovědět
28.1.2016 1:52
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na KZB
Atrament:28.1.2016 18:19

Prostě před každým zápisem nejprve projdi ten soubor a podívej se jestli už to tam máš uložené. Nebo taky možnost ukládej si někam stranou použité sId a před každým uložením se tam nejprve podívej jestli už si ukládal něco s daným sId. Ale nevím o jak velké data jde, aby to taky potom celé netrvalo věčnost :)

 
Nahoru Odpovědět
28.1.2016 18:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.