Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

Diskusia – 3. diel - Práca s textovými súbormi v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na Neaktivní uživatel
Michal Žůrek - misaz:7.5.2015 21:33

pokud máš dostatek oprávnění tak v tom není problém.

Avatar
ronep
Člen
Avatar
ronep:21.6.2015 13:09

a ako nacitat riadok ktori chcem ja ?

Avatar
matrin
Člen
Avatar
matrin:26.12.2015 22:17

Potřebuji pracovat se soubory, tzn. v programu potřebuji z nějakého souboru načíst text a pak s ním i pracovat a do stejného souboru ukládat nějaké data. V jedné metodě mam, aby se zadal od uzivatele nazev souboru do promenne, ze ktere se pak cte. Z metody se vrací jit načteny text pod Stringem. Potřebuji však dále pracovat a přenášet do ostatních metod promennou, ve které je název souboru, aby se to dále ukládala data do zadaného souboru. Jste mi nekdo ochoten poradit, jestli jste z textu nějak pochopili muj problém? Díky

Takto vypadá ta metoda pro čtení ze souboru:

static String nactiText(String s) throws IOException { //funkce pro nacteni textu ze souboru
Scanner sc = new Scanner(System.in);
String soubor;
String nactenyTxt;

System.out.prin­tln(s);
soubor = sc.nextLine();

try (BufferedReader in = new BufferedReader(new FileReader(sou­bor))) {

nactenyTxt = in.readLine();
return nactenyTxt;

} catch (Exception e) {
System.err.prin­tln("Chyba při četení ze souboru.");
return "";
}
}

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na matrin
pocitac770:26.12.2015 23:17

Ten text z proměnné "soubor" si můžeš překopírovat do nějaké globální statické proměnné. Pro pozdějsí užití by bylo možná ještě lepší si oddělit načítání souboru zvlášť do jiné metody a tu pak volat z mainu... Ale to je jen tip :)

Editované
Avatar
matrin
Člen
Avatar
Odpovedá na pocitac770
matrin:27.12.2015 21:52

Díky, už jsem to vyřešil. Přišel jsem ještě na další problém...pokud chci načíst text ze souboru, načte to pouze slova do prvního odstavce, tzn. dokud v textu není další řádek, když zmáčknu enter. Potřebuju aby mi to načetlo cely text, lze to nejak? Díky

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na matrin
pocitac770:27.12.2015 22:26
String text;
while((text = in.readLine()) != null)
        nactenyTxt += text;

Něco takového (místo řádky "nactenyTxt = in.readLine();" )? Je to vlastně na stejném principu jako první kód pod "Čtení existujícího souboru" ;)

Editované
Avatar
koumes3
Člen
Avatar
koumes3:29.1.2017 19:27

Ahoj, chci se zeptat, zda už se někdo setkal s následujícím problémem.
Při načítání textu ze souboru, kde jsou v textu obsažené i znaky pro odřádkování a tabulátor nebo escapování uvozovek, se do textu uloží(zdvojí se) zpětné lomítka. Dočetl jsem se, že to je způsobeno tím, že se čtou znaky po jednom a tudíž narazí-li se na \ tak se automaticky escapuje a tím vznikne to dvojité \\. Vypadá to pak např. \\n \\t nebo \\". To vcelku chápu.Na co, ale nemůžu přijít ani se dočíst je, jak to zdvojení odstranit, aby pak se text zobrazil jak má. U tabulátoru a odřádkování se dá použít např. text.replace("\\t", "\t"); což ovšem u uvozovek neprojde. V kódu to hlásí chybu. Pokud by měl někdo nějaké elegantní řešení budu rád, když se se mnou podělí o zkušenost.
Díky

Avatar
koumes3
Člen
Avatar
koumes3:29.1.2017 19:31

Ještě k předchozímu dotazu. Program jsem zkoušel v NetBeans IDE.

Avatar
Rasinsky
Člen
Avatar
Odpovedá na pocitac770
Rasinsky:26.7.2018 11:04

viem ze starsie, ale tak dalsie mozne riesenie:

Scanner fileScanner = new Scanner(UserFile);

while (fileScanner.hasNext()) {
        text =text + " " +fileScanner.next();
        }
fileScanner.close();    //nezabudat na zatvorenie scanner-u

co sa tyka escapovania asi to bude aj s NetBeans, pouzivam Eclipse, a nacita to v pohode, bez escapovania.

UserFile

pokus aaa funguje

aj prazdny riadok
"uvodzovky"
\t \n

vystup

pokus aaa funguje aj prazdny riadok "uvodzovky" \t \n

Avatar
MiroslavP
Člen
Avatar
MiroslavP:17.9.2018 21:54

Velmi užitečné a srozumitelné. děkuji.:-)

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 36.