Stránka 1 z 1
Java-pomalé práce se souborem...
Napsal: ned 27. úno 2011, 16:12
od Václav Sedlář
Dobrý den, tvoří v javě jeden program, který už funguje, ale má jeden problém (není tak závažný,ale štve mě...)
V programu hojně používám zápis a čtení souboru, kde je uloženo něco takového:
Kód: Vybrat vše
Čísloxxxxx¤Text1¤den-číslo¤měsíc-číslo¤rok-číslo¤jmeno¤přijmeni¤text2¤
Toto tam je hodně krát a problém je když je to tam třeba nad 3000 krát...a použiji normální načítání txt souboru pomocí BufferedReader, tak to načítá ten soubor minutu...nedalo by se to nějak zrychlit (jak načítání, tak hlavně čtení)?
Zkoušel jsem použít na čtení DataInputStream a zápis DataOutputStream ->tedy binárně, ale nějak jsem nedokázal překročit velikost souboru 61kb při zápisu-víc jsem prostě nezapsal a vytvořilo to 0kb soubor...
Někdo říkal, že zkusit použít ObjectOutputStream a ObjectInputStream, jenže toto jaksi ještě neumím použít...
Mohl by někdo poradit, popř. vytvořit optimální kod jen pro zápis a čtení souboru?Je to sice detail, protože v reálu bude v souboru max 1500 záznamů, ale...
Důležitá podmínka-potřebuju předávat k zápisu řetezec string a naopak při načítání potřebuju obsah souboru dostat do stringu...!!!!
Děkuji za pomoc
Re: Java-pomalé práce se souborem...
Napsal: ned 27. úno 2011, 18:40
od OndraSter
Načítáš soubor najednou nebo po kusech?
Re: Java-pomalé práce se souborem...
Napsal: ned 27. úno 2011, 18:51
od Václav Sedlář
Najednou....protože pak s tím vždy potřebuji pracovat najednou v poli string....ale asi to nechám být-konečně se mi povedlo rozchodit ten zápis a čtení pomocí ObjectOutputStream a ObjectInputStream...při testu kdy jsem v souboru měl 5800 položek to načítalo 2mibuty 2 sekundy.a to jde...
Ale řeším nový problém-k některým funkcím používám zabezpečení heslem,takže se uživateli zobrazí okno kam zadá heslo (místo zadávaných znaků se objevují tečky=ok,ale pak musí uživatel kliknout na tlačítko ok,ale já bych potřeboval,aby se zadané heslo mohlo potvrdit entrem-jak se to dělá?děkuji...
Re: Java-pomalé práce se souborem...
Napsal: sob 5. bře 2011, 01:19
od Václav Sedlář
Václav Sedlář píše:
...Ale řeším nový problém-k některým funkcím používám zabezpečení heslem,takže se uživateli zobrazí okno kam zadá heslo (místo zadávaných znaků se objevují tečky=ok,ale pak musí uživatel kliknout na tlačítko ok,ale já bych potřeboval,aby se zadané heslo mohlo potvrdit entrem-jak se to dělá?děkuji...
Nikdo neví?

Re: Java-pomalé práce se souborem...
Napsal: sob 5. bře 2011, 11:38
od OndraSter
Neznám Javu a jejich "winforms" framework, ale pokud to nejde nějak přímo (nastavit tomu oknu "potvrzovací tlačítko" (= tlačítko, když se stiskne enter) na OK) tak chytat klávesy do toho textboxu a pokud jeho hexa == enteru, vyfajrovat event pro stisknutí tlačítka OK.
Re: Java-pomalé práce se souborem...
Napsal: sob 5. bře 2011, 12:40
od Václav Sedlář
OndraSter píše:...nastavit tomu oknu "potvrzovací tlačítko" (= tlačítko, když se stiskne enter) na OK
hmm,to jsem ještě nezkoušel...zkusím tuto možnost najít a dám vědět...díky
Re: Java-pomalé práce se souborem...
Napsal: sob 5. bře 2011, 13:38
od Václav Sedlář
hmm, tak jsem prošel celej netbeans a zatím se mi povedlo to udělat jen tak, že když kliknu myší kamkoliv do okna, tak se provede to, jako bych kliknul na tlačítko ok...
Je tam ještě nějaká funkce keypressed (používá se KeyListener),ale to zas funguje na jakoukoliv klávesu a nepřišel jsem na to, jak nastavit jen určitou klávesu...
Re: Java-pomalé práce se souborem...
Napsal: sob 5. bře 2011, 21:04
od djgeneral
Musíš v metodě
keyPressed(KeyEvent e) zavolat kód co se má vykonat až po splnění určité podmínky (stisknutá klávesa byla enter)
Kód: Vybrat vše
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
//perform something...
}
}
Re: Java-pomalé práce se souborem...
Napsal: sob 5. bře 2011, 22:10
od Václav Sedlář
hustý-moc děkuji-funguje to...
Kód: Vybrat vše
private void keyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
jButton8ActionPerformed(null);
}
}