Avatar
KZB
Člen
Avatar
KZB:

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. ledna 1:52
Avatar
Atrament
Člen
Avatar
Odpovídá na KZB
Atrament:

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. ledna 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.