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

Diskuze: Zápis do souboru

Aktivity
Avatar
mira9825_CZ
Člen
Avatar
mira9825_CZ:11.2.2014 15:08

Mohl by mi někdo z vás poradit nebo napsat odkaz na článek kde zjistím co mám napsat do programu aby vytvořil textový soubor a mohlo se pak do něj zapisovat

 
Odpovědět
11.2.2014 15:08
Avatar
Paul
Člen
Avatar
Paul:11.2.2014 15:14

Přímo tady na webu je výbornej tutoriál o práci se soubory v Javě:
http://www.itnetwork.cz/java/soubory

 
Nahoru Odpovědět
11.2.2014 15:14
Avatar
mira9825_CZ
Člen
Avatar
mira9825_CZ:11.2.2014 15:35

Děkuji

 
Nahoru Odpovědět
11.2.2014 15:35
Avatar
Benjibs
Člen
Avatar
Odpovídá na mira9825_CZ
Benjibs:11.2.2014 15:40

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.

Nahoru Odpovědět
11.2.2014 15:40
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 16:35

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.

Nahoru Odpovědět
11.2.2014 16:35
You are the greatest project you will ever work on.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 16:40

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.

Editováno 11.2.2014 16:40
Nahoru Odpovědět
11.2.2014 16:40
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 16:52

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 :)

Nahoru Odpovědět
11.2.2014 16:52
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Zdeněk Pavlátka:11.2.2014 16:59

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

Nahoru Odpovědět
11.2.2014 16:59
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 17:00

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.

Nahoru Odpovědět
11.2.2014 17:00
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 17:04

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.

Nahoru Odpovědět
11.2.2014 17:04
You are the greatest project you will ever work on.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 17:07

Veď to nie je dokumentácia, ale tutoriál k NIO (ten link mohol zmiasť kedže sa začína na docs.oracle :D):

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);
}
Editováno 11.2.2014 17:08
Nahoru Odpovědět
11.2.2014 17:07
1 + 1 = 2
Avatar
Odpovídá na Benjibs
Zdeněk Pavlátka:11.2.2014 17:09

Ale kódy jsou tam stejně nezvýrazněné.

Nahoru Odpovědět
11.2.2014 17:09
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 17:09

No, to je teda opravdu rozdíl :)

Nahoru Odpovědět
11.2.2014 17:09
You are the greatest project you will ever work on.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 17:12

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 ;)

Nahoru Odpovědět
11.2.2014 17:12
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 17:16

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

Nahoru Odpovědět
11.2.2014 17:16
You are the greatest project you will ever work on.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 17:22

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.
Editováno 11.2.2014 17:25
Nahoru Odpovědět
11.2.2014 17:22
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 17:26

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

Nahoru Odpovědět
11.2.2014 17:26
You are the greatest project you will ever work on.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 17:45

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

Nahoru Odpovědět
11.2.2014 17:45
1 + 1 = 2
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Benjibs
David Hartinger:11.2.2014 17:57

To je fakt. Nechceš o tom napsat nějaký článeček? :)

Nahoru Odpovědět
11.2.2014 17:57
You are the greatest project you will ever work on.
Avatar
Benjibs
Člen
Avatar
Odpovídá na David Hartinger
Benjibs:11.2.2014 18:02

Niekedy cez víkend by som mohol skúsit čosi zosmolit :`

Nahoru Odpovědět
11.2.2014 18:02
1 + 1 = 2
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 20 zpráv z 20.