Diskuze: Zápis do souboru
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Přímo tady na webu je výbornej tutoriál o práci se soubory v Javě:
http://www.itnetwork.cz/java/soubory
Ohľadom práce so súbormi by som skôr odporučil tento tutoriál, http://docs.oracle.com/…/fileio.html,
nakoľko popisuje lepšie a modernejšie API.
Můžeš upřesnit jaké modernější API máš na mysli? Když jsme články psal, dával jsem si záležet, aby to bylo co nejmodernější, používám tam TWR a podobně. Navíc manuál Javy je velmi nekvalitní, nejen, že je nepřehledný sám o sobě, ale ani nemají zvýrazněné zdrojáky.
Mám na mysli java.nio, triedy Files, Path, a podobne ako alternatívu k
veciam predstaveným napr. v tomto článku: http://www.itnetwork.cz/…-soubory-txt.
nio bolo pritom prístupné už od Javy 4, alebo 5, teraz presne neviem.
S neprehladnostou dokumentácie máš pravdu, ale napríklad aj odkaz ktorý som
dával vyššie obsahuje dodatočné množstvo informácii.
Files pokud vím (v té dokumentaci se prostě nevyznám) umožňuje jen věci jako načíst všechny řádky atd. To je pro velké soubory nepoužitelné, proto takové API neučím, učím co je univerzální.
Pracuji s dokumentací několika jazyků a ta Javy je naprosto
nedostatečná, tady se neshodneme
Dokumentace k javě je otřesná. 3 hodiny jsem tam hledal něco použitelného k výjimkám. Pak jsem se na to vykašlal a odvodil to ze C#.
Files obsahuje presne rovnakú funkcionalitu ako tá, ktorá bola
predstavená tebou v tom článku: http://docs.oracle.com/…io/file.html#…
akorát toho zvládne ešte omnoho viac.
Můžeš prosím uvést konkrétní kód, který přes třídu Files načte jen několik řádek ze souboru? Odkazy na dokumentaci mně a většině lidí bohužel nepomohou.
Veď to nie je dokumentácia, ale tutoriál k NIO (ten link mohol zmiasť
kedže sa začína na docs.oracle ):
Charset charset = Charset.forName("US-ASCII");
try (BufferedReader reader = Files.newBufferedReader(file, charset)) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}
To je predsa len dobre, keď je to podobné starému API, nie?
Určite by sa páni vývojári nenamáhali s prekopaním celého IO API, ak by
na to nebol pádny dôvod
Není to podobné, je to stejné. Files má na sobě jen nějakou metodu, co si vnitřně vytvoří reader a načte ty všechny řádky. Jinak se dělá vše stejně. Co je popsané tady je správně a aktuální.
Dobre, tak dajme tomu, že konkrétne v tomto prípade je to jedno (aj keď
je možné že implementácia statickej newBufferedReader môže obsahovať
nejaké užitočné veci),
v 2. článku série o súboroch je popisovaná trieda File,
tam už je ten rozdiel v API dosť výrazný.
Navyše, citujem:
Prior to the Java SE 7 release, the java.io.File class was the mechanism used for file I/O, but it had several drawbacks.
Many methods didn't throw exceptions when they failed, so it was impossible to obtain a useful error message. For example, if a file deletion failed, the program would receive a "delete fail" but wouldn't know if it was because the file didn't exist, the user didn't have permissions, or there was some other problem.
The rename method didn't work consistently across platforms.
There was no real support for symbolic links.
More support for metadata was desired, such as file permissions, file owner, and other security attributes.
Accessing file metadata was inefficient.
Many of the File methods didn't scale. Requesting a large directory listing over a server could result in a hang. Large directories could also cause memory resource problems, resulting in a denial of service.
It was not possible to write reliable code that could recursively walk a file tree and respond appropriately if there were circular symbolic links.
Files nedělá nic jiného, než že používá ty třídy, které tu já popisuji. Není to ani žádná abstrakce, jak jsi viděl, tak s nimi stejně musíš umět zacházet. Proto je potřeba, aby se to lidé učili tak, jak je to tu ukázané, chápeš?
Do konverzace jsem vstoupil proto, že to z tvého "lepší a modernější" vypadalo, jako by se tu učilo něco starého a nepotřebného. Ale tomu tak není.
Máš pravdu, z tej strany som sa na to nepozeral.
Nie je na škodu poznať tebou popísané veci, avšak kedže tam nie je žiadna zmienka o NIO, väčšina čitateľov by si mohla myslieť, že nič podobné neexistuje, a preto to kvôli tomu nepoužívať.
To je fakt. Nechceš o tom napsat nějaký článeček?
Niekedy cez víkend by som mohol skúsit čosi zosmolit
Zobrazeno 20 zpráv z 20.