Diskuze: Praca z textovim suborom
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 19 zpráv z 19.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zkus načítat řádek po řádku a který řádek potřebuješ, tak tam se zastav.
ok ale ja poviem programu ze chcem riadok 5 a on nacita 1-5 a potom sa
zastavi to by aj isle ale ked mu poviem ze cgcem riadok 555 tak to bude nacitat
riadok 1 az riadok 555 a medi tim mi zaplni ramku ani nigdi nedostane
ja chcem priamo len ten riadok ok ?
Ahoj, přímo na daný řádek se nedostaneš. Jediný způsob Ti tu už napsali a to načítat soubor řádek po řádku dokud se nedostaneš tam kam potřebuješ.
Tak bych se chtěl opravit. Trošku jsem zagooglil a přeci jenom jsem něco
našel.
Pro načítání malých souborů můžeš použít toto:
String line = Files.readAllLines(Paths.get("file.txt")).get(555);
Pro načítání větších souborů pak toto:
try (Stream<String> lines = Files.lines(Paths.get("file.txt"))) {
String line = lines.skip(555).findFirst().get());
} catch (IOException e) {
e.printStackTrace();
}
Skús toto:
String text_riadka="";
try (BufferedReader reader = new BufferedReader(new FileReader(Nejaky súbor)))
{
int pocet_riadkov_suboru=0;
while(reader.readLine() != null)
{
pocet_riadkov_suboru++;
}
for(int i=0;i<pocet_riadkov_suboru; i++)
{
String s=reader.readLine();
if(i==Pozadovany_riadok)
{
text_riadka=s;
}
}
}catch(Exception e){e.printStackTrace();}
Trocha nepraktické ale hádam pôjde 
Takže se zeptáš streamu n-krát, jestli má ještě řádek, on ti pak
řekne u n+1 pokusu, že nemá a ty se ho ještě n krát budeš zkusit
přesvědčit, jestli tam fakt nic nemá? Tohle fungovat opravdu nebude 
to sice vypadá elegantně, ale je to dost hnusné. protože toto načte do paměti všechny řádky.
Oprava toho hore:
while(reader.readLine() != null)
{
pocet_riadkov_suboru++;
System.out.println(pocet_riadkov_suboru);
String s=reader.readLine();
if(pocet_riadkov_suboru==Pozadovany riadok)
{
text_riadka=s;
break;
}
}
Tentoraz odskúšané 
to ale podle mě nebude fungovat, nevrátí to 555 řádek ale 1110 řádek. readLine přečte řádek a ty ho v jedné iteraci voláš 2× (v podmínce cyklu a při ukládání do proměnné s)
a co to napsat jednoduše
int hleadanyRadek = 555;
for (int i = 0; i < hleadnyRadek - 1; i++) {
if (reader.readLine() == null) {
return null;
}
}
return reader.readLine();
i když ta podmínky v cyklu je zbytečná.... Po úpravě:
int hleadanyRadek = 555;
for (int i = 0; i < hleadnyRadek - 1; i++) {
reader.readLine();
}
return reader.readLine();
while(hledanyRadek-->0) reader.readLine();
return reader.readLine();
Otázka je, jak se chová stream v Javě, když už jsi na konci a pořád po
něm něco chceš 
to je sice krátké, ale pak už nemůžeš pracovat s proměnnou hledanyRadek. Osobně takové řešení nemám moc rád.
Já myslel, že zadání bylo jen získat daný řádek ze souboru.
ok diky moc za mnoztvo napadou
a ano ide mi len o to nacitat ten dani riadok a nic viac ale asi mi nedoslo
ktore z tich vsetkych rieseni je spravne tak viskusam vsetky 
a je zaujimave ako tagmer vsade ste davali priamo riadok cislo 555 aj ked to
bolo prve velke cislo co som natukal
jo a ten return je aky datovi tip ? alebo je to podla toho do akeho datoveho
tipu ho necham vratit ?
Zobrazeno 19 zpráv z 19.
