Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.

Slides:



Advertisements
Podobné prezentace
Vstup a výstup Ing. Lumír Návrat  katedra informatiky, A-1018 
Advertisements

Funkce Připomeňme si program pro výpočet faktoriálu:
Vstup a výstup doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Spojové struktury Spojová struktura ( linked structure ):
VISUAL BASIC Práce se soubory.
Aplikační a programové vybavení
Pole, ukazatele a odkazy
Strukturované datové typy
Algoritmy I. Cvičení č. 10.
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
Alg51 Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy –zadaný problém rozložíme na podproblémy –pro řešení podproblémů.
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
Druhé cvičení Vytváření identifikátorů Datové typy
Čtvrté cvičení Objektové programování Objektový model v Javě
Větvení cykly J a v a Začínáme programovat Lucie Žoltá.
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
KIV/PPA1 cvičení 11 Cvičící: Pavel Bžoch. Osnova cvičení Souborový vstup a výstup Práce s textovými soubory.
Struktury, qsort, mergesort BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií.
PRÁCE S PROUDY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
C# - znakové typy a řetězce
Kapitoly z metodologie pedagogického výzkumu Prostředí pro výuku algoritmů Vojtěch Ouška.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Třída jako zdroj funkcionality
C# - funkce a procedury Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
C# - I/O, streamy, práce se soubory
Počítače a programování 1
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Příklady v jazyku C – část 4
Příklady v jazyku C – část 3
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
ZADÁNÍ Sestavte program, který vypočítá obvod a obsah čtverce o straně a. Zajistěte, aby výpočet byl realizován pouze v případě, kdy strana a bude mít.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
Příklady v jazyku C – část 2
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Sedmé cvičení Soubory Vstupně/výstupní proudy. Java cv72 Soubory Třída File Objekt popisující soubor na filesystému Nedá se z něho přímo číst a psát Představuje.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Šesté cvičení Výjimky Balíky.
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
POSLOUPNOST úkol 1_41. ZADÁNÍ Sestavte program, který doplní tabulku nepřímé úměrnosti pro hodnoty proměnné x = 1, …, n. Nepřímá úměrnost je zadána uživatelem.
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
Příklady v jazyku C – část 8. Napište program, který inicializuje 2-rozměrné pole uživatele (5 řádků, 2 sloupce) a naplní ho hodnotami (první sloupec.
PŘÍKAZ while úkol 1_42.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Příklady v jazyku C – část 2
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
ÚPLNÁ PODMÍNKA V JAVĚ úkol 1_29.
NEÚPLNÁ PODMÍNKA V JAVĚ úkol 1_26. ZADÁNÍ Napište zdrojový kód k zadanému vývojovému diagramu.
ZADÁNÍ Sestavte program, který vytiskne n hvězdiček.
PŘÍKAZ for úkol 1_47.
NEÚPLNÁ PODMÍNKA V JAVĚ úkol 1_25. ZADÁNÍ Sestavte program, který po načtení čísla z klávesnice vypočítá jeho absolutní hodnotu a vytiskne ji na obrazovku.
PŘÍKAZ while úkol 1_40.
České vysoké učení technické Fakulta elektrotechnická S oubory Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v 1.01.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Úvod do Pythonu – IO operace se soubory.
C# konzole – Vstup a výstup
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Algoritmizace a programování
Jakub Brodský Ondřej Radosta
C# přehled vlastností.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná na řádky –každý znak je reprezentován jedním bytem, jehož obsah je dán nějakým kódováním znaků –členění na řádky je závislé na platformě a obvykle je dáno jedním nebo dvěma řídicími znaky ( CR, CR LF, 0x0d 0x0c, “\r\n” ) Java však pracuje se znaky typu char, které jsou zakódovány v 16-ti bitovém kódu Unicode ( ) Proto jsou zapotřebí transformace mezi 16-ti bitovými hodnotami typu char a 8-mi bitovými znaky textového souboru Vytvoření textového souboru z posloupnosti hodnot typu char s implicitním kódováním umožňuje třída FileWriter Čtení textového souboru jako posloupnosti hodnot typu char s implicitním kódováním umožňuje třída FileReader Pro OS Windows je implicitní kódování Cp1250

alg92 Příklad textového souboru Následující program zapíše znaky dané řetězem a pak soubor přečte do pole prvků typu char a pole vypíše na obrazovku package alg9; import java.io.*; import sugar.Sys; public class Text1 { public static void main(String[] args) throws Exception{ FileWriter out = new FileWriter( "text1.txt" ); out.write( "čau, nazdar" ); out.close(); FileReader in = new FileReader( "text1.txt" ); char znaky[] = new char[20]; int pocet = in.read( znaky ); for ( int i=0; i<pocet; i++ ) Sys.p( znaky[i] ); } Soubor text1.txt si můžete prohlédnout textovým editorem

alg93 Metody tříd FileWriter a FileReader Uveďme některé jejich metody s tím, že všechny mohou vyhodit kompilátorem kontrolovanou výjimku IOException FileWriter void write(int c) –zapíše znak c void write(char[] cbuf) –zapíše znaky z pole cbuf void write(String str) –zapíše znaky tvořící řetěz str FileReader int read() –vrátí přečtený znak, na konci nepřečtené znaky vrátí -1 int read(char[] cbuf) –přečte znaky do pole cbuf a vrátí jejich počet, na konci souboru vrátí -1

alg94 Výstupní konverze Do textového souboru často potřebujeme zapisovat posloupnosti znaků tvořící zápisy čísel Řetězy tvořící dekadické zápisy čísel lze získat statickými metodami valueOf třídy String Příklad: public class Text2 { public static void main(String[] args) throws Exception{ FileWriter out = new FileWriter( "text2.txt" ); int a = 10, b = 20; out.write(String.valueOf(a)); out.write( "+" ); out.write(String.valueOf(b)); out.write( "=" ); out.write(String.valueOf(a+b)); out.close(); } Program vytvoří textový soubor obsahující text 10+20=30

alg95 Třída PrintWriter Třída PrintWriter umožňuje vytvářet textový soubor metodami, které: –konvertují primitivní typy do znakového tvaru –oddělují řádky oddělovačem dle platformy ( CR LF ve Windows, CR v Unixu ) Příklad: public class Text3 { public static void main(String[] args) throws Exception{ PrintWriter out = new PrintWriter( new FileWriter( "text3.txt" )); int a = 10, b = 20; out.print(a); out.print( "+" ); out.print(b); out.print( "=" ); out.println(a+b); out.println( "konec programu" ); out.close(); } Program vytvoří soubor obsahující text 10+20=30 konec programu

alg96 Metody třídy PrintWriter void print(T x) –metoda je definovaná pro všech osm primitivních typů T, do souboru zapíše textovou reprezentaci hodnoty x void print(String str) –zapíše znaky řetězu str; je-li str rovno null, zapíše null void print(Object o) –zapíše textovou reprezentaci objektu o, kterou vrátí metoda o.toString(); obsahuje-li o null, zapíše se null void println() –zapíše oddělovač řádků ( CR nebo CR LF podle platformy ) void println(T x) –zapíše textovou reprezentaci hodnoty x a zakončí řádek a další... Tyto metody třídy PrintWriter nekončí vyhozením výjimky

alg97 Čtení textového souboru po řádcích Třída FileReader umožňuje čtení po jednotlivých znacích nebo po skupinách znaků ( ukládaných do pole znaků ), přičemž oddělovač řádků je závislý na platformě. Čtení po řádcích nezávisle na platformě umožňuje třída BufferedReader Příklad: program který přečte textový soubor daný parametrem z příkazového řádku a vypíše jej na obrazovku public class Text4 { public static void main(String[] args)throws Exception{ if (args.length==0) { Sys.pln( "použití: Text4 " ); return; } BufferedReader in = new BufferedReader( new FileReader(args[0])); String radek = in.readLine(); while (radek!=null) { Sys.pln(radek); radek = in.readLine(); } } }

alg98 Metody třídy BufferedReader Všechny metody mohou vyhodit výjimku IOException int read() –vrátí přečtený znak do proměnné typu int, na konci souboru vrátí -1 int read(char[] cbuf) –přečte znaky do pole cbuf a vrátí jejich počet, na konci souboru vrátí -1 int read(char[] cbuf, int off, int len) –přečte len znaků do cbuf počínaje indexem off, výsledkem je počet přečetných znaků, na konci souboru vrátí -1 String readLine() –přečte znaky až do oddělovače řádků a vytvoří z nich řetěz ( bez oddělovače řádků ), a ten vrátí. Na konci souboru vrátí null. a další...

alg99 Čtení textu po lexikálních elementech Textový soubor se často skládá z lexikálních elementů tvořených posloupnostmi znaků s určitou syntaxí Čtení textového souboru po lexikálních elementech umožňuje třída StreamTokenizer, která rozlišuje 4 druhy lexikálních elementů ( tokens ): –číslo, jako posloupnost dekadických číslic příp. začínající znaménkem a příp. obsahující desetinnou tečku –slovo, jako posloupnost písmen a číslic začínající písmenem –oddělovač řádku –konec souboru

alg910 Čtení textu po lexikálních elementech Příklad: public class Text5 { public static void main(String[] args) throws Exception{ StreamTokenizer st = new StreamTokenizer( new FileReader( "text5.txt" )); st.eolIsSignificant( true ); while (true) { switch (st.nextToken()) { case StreamTokenizer.TT_NUMBER: Sys.p(st.nval + " " ); break; case StreamTokenizer.TT_WORD: Sys.p(st.sval + " " ); break; case StreamTokenizer.TT_EOF: return; case StreamTokenizer.TT_EOL: Sys.pln(); break; }