Fájlok, stream-ek. Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata

Hasonló dokumentumok
File és stream kezelés. Dr. Kotsis Domokos Nagy Tibor

Input Output Műveletek

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Fájlkezelés. Szöveges fájlok kezelése

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Fájlműveletek és elszigetelt tárolás

Programozási nyelvek Java

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

ELTE SAP Excellence Center Oktatóanyag 1

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

.NET alapszolgáltatások 2.

JAVA ALKALMAZÁSOK 5. ELŐADÁS 1/9/2017 1

Pénzügyi algoritmusok

Informatika terméktervezőknek

Vizuális, eseményvezérelt programozás XI.

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Objektumorientált Programozás VI.

Objektumorientált programozás C# nyelven

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Komputeralgebra rendszerek

JAVA PROGRAMOZÁS 8.ELŐADÁS

Objektum Orientált Programozás IV.

Objektumorientált Programozás III.

1. Alapok. Programozás II

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Objektumorientált programozás C# nyelven

Objektumorientált Programozás IV.

BME MOGI Gépészeti informatika 13.

Operációs rendszerek. UNIX fájlrendszer

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Listák, szótárak, fájlok Listák, szótárak, fájlok

Programozási nyelvek Java

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Hálózati operációs rendszerek II. Kötetek kezelése

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Objektum Orientált Programozás VII.

Java programozási nyelv 10. rész Input/output kezelés

A C programozási nyelv VI. Parancssori argumentumok File kezelés

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Powershell 2. gyakorlat

Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Objektumorientált Programozás VI.

A Java nyelv. Dialógus ablakok. Elek Tibor

C++ programozási nyelv Konstruktorok-destruktorok

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Összeállította: Szeli Márk 11. D 2017/18. A C# programozási nyelv. Alapfogalmak

A C++ nyelvben a függvény nevek túlterhelésével biztonságosabbá tehetnénk az adatok kiírását és beolvasását.

A WEB programozása - JavaScript 6 dr.gál Tibor őszi előadás. A Windows Scripting Host (WSH)

3. Osztályok II. Programozás II

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Adatbázis kezelés Delphiben. SQL lekérdezések

1. Egyszerű (primitív) típusok. 2. Referencia típusok

INFORMATIKAI ALAPISMERETEK

A szerzõrõl... xi Bevezetés... xiii

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Hálózati operációs rendszerek II. OES biztonsági rendszere

Programozási nyelvek Java

Programozási nyelvek II.: JAVA

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Programozási Nyelvek: C++

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Programozás I gyakorlat

Programozás I gyakorlat. 10. Stringek, mutatók

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Tájékoztató. Használható segédeszköz: -

Osztályok. 4. gyakorlat

Hálózati operációs rendszerek II. Novell Netware 5.1 Netware fájlrendszer

Programozási nyelvek JAVA EA+GY 1. gyakolat

7. gyakorlat Sorozatok, Fájlkezelés

Maximum kiválasztás tömbben

2018, Funkcionális programozás

Adatbázisrendszerek I. File-szintű adattárolás C-ben. 1. gyakorlat

S z á m í t ó g é p e s a l a p i s m e r e t e k

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

Hetedik témakör kiegészítés:

Pénzügyi algoritmusok

Programozás I gyakorlat

Smalltalk 2. Készítette: Szabó Éva

Objektumorientált programozás C# nyelven

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

.NET alkalmazások telepítése

5. Példa: Olvasás szöveges fájlból (program3_1.vi)

Programozási nyelvek II. JAVA

Adatbázisrendszerek I. Fájlszintű adattárolás C-ben

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Átírás:

Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Fájlok, stream-ek Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata Nagy Tibor BMF NIK, 2006 2007

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelezőirodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2

System.IO névtér típusai File, FileInfo Fájlok és jellemzőik kezelése Directory, DirectoryInfo Könyvtárak és jellemzőik kezelése FileStream Olvasás/írás fájlból/fájlba IO-kezelés StreamReader/ StreamWriter Szöveg típusú adatok olvasása/írása BinaryReader/ BinaryWriter Különböző típusú adatok olvasása/írása Felsorolás típusok a fájlnyitási módok, fájlhozzáférés, fájlmegosztás, és egyéb beállítások megadásához System.IO.Compression névtér típusai DeflateStream/ GZipStream Adat betömörítése, kitömörítése 3

A File osztály Statikus osztály, háttértáron elhelyezkedő fájlok kezelésére Metódusai: Create(string path, int buffersize, FileOptions options) Copy(string sourcefilename, string destfilename) Move(string sourcefilename, string destfilename) Delete(string path) Exists(string path) GetAttributes(string path) SetAttributes(string path, FileAttributes attributes) GetCreationTime(string path) Nem statikus változata a FileInfo osztály 4

A Directory osztály Statikus osztály, háttértáron elhelyezkedő könyvtárak kezelésére Metódusai: CreateDirectory(string path) Exists(string path) Delete(string path, bool recursive) GetDirectories(string path) GetCurrentDirectory(), SetCurrentDirectory(string path) GetFiles(string path) GetParent(string path) Nem statikus változata a DirectoryInfo osztály 5

A Path osztály Fájlnevet és elérési utat tartalmazósztringrészekre bontására használható Metódusai: GetDirectoryName(string path) GetFileName(string path) GetExtension(string path) GetFileNameWithoutExtension(string path) 6

Feladat 1. Készítsen grafikus felületűalkalmazást, amely az aktuális könyvtár tartalmát egy listadobozban jeleníti meg, illetve a listadobozban kijelölt fájlról/könyvtárról információkat (név, könyvtárnév, attribútumok, létrehozás dátuma, ideje) ír ki egy MessageBoxban. Házi feladat: Az alkalmazást bővítse ki úgy, hogy a kijelölt fájltlehessen törölni, illetve másolni, mozgatni egy megadott helyre. 7

Stream-ek osztályhierarchiája 8

Stream-ek csoportosítása Fizikai stream-ek Közvetlenül egy adott médiára ír/médiáról olvas Média: Memória (puffer, sztring, karaktertömb) Háttértár (fájl) Hálózat (ennek a tananyagnak nem témája) Soros port (ennek a tananyagnak nem témája) FileStream MemoryStream StringReader, StringWriter Logikai stream-ek Egy másik stream-re ír/stream-ről olvas BinaryReader, BinaryWriter StreamReader, StreamWriter BufferedStream DeflateStream, GZipStream 9

Stream-ek használata Megnyitás: A megfelelő stream-osztály példányának létrehozásával pl.: StreamReader sr = new StreamReader("proba.txt"); A Fileosztály metódusai (Create, Open, OpenRead, OpenWrite, CreateText, OpenText, AppendText) segítségével pl.: StreamReader sr=file.opentext("proba.txt"); Bezárás: A stream Close() metódusával pl.: sr.close(); Pozicionálás: A stream-eknagy része soros hozzáférésű. A pozícionálás ezeknél az író/olvasó metódusokkal történik. A közvetlen hozzáférésűstream-ekesetén lehetőség van a pozícionálásra a Seek(long offset, SeekOrigin origin)metódus segítségével. A SeekOrigin{ Begin, End, Current} felsorolás konstansaival adhatómeg, hogy honnan számítva mozduljon el offsetbyte-tal a fájlpointer. (FileStream, MemoryStream, BufferedStream) 10

A using utasítás Szintaxisa using (objektum-létrehozás) ( { utasítások; } A paraméterként létrehozott objektum(ok) által foglalt memóriaterület automatikus felszabadítása az utasításblokk végén (nem kell várni a GC-re) Példa: using (StreamReader ( sr = new StreamReader("proba.txt")) { string s, s1 = ""; while((s = sr.readline())!= null) s1 += s + "\n"; MessageBox.Show(s1); sr.close(); } 11

StreamWriter Szövegek fájlba írása meghatározott kódolás szerint StreamWriter(Stream s) StreamWriter(string filename) StreamWriter(string path, Encoding enc) StreamWriter(string path, bool append) StreamWriter(string path, bool append, Encoding enc) StreamWriter(string path, bool append, Encoding enc, int buffersize) Metódusai Write( ) : adott típusú adat kiírása WriteLine( ) : adott típusú adat kiírása soremeléssel Tulajdonságai NewLine: az újsor karakter AutoFlush: kiíródjon-e minden Write() után a kiírandó adat? Kódolás Az Encoding osztály statikus tulajdonságai (pl.: Encoding.UTF8) 12

StreamReader Adat olvasása szövegfájlból meghatározott kódolás szerint StreamReader(Stream s) StreamReader(string filename) StreamReader(string path, Encoding enc) StreamReader(string path, bool append) StreamReader(string path, bool append, Encoding enc) StreamReader(string path, bool append, Encoding enc, int buffersize) Metódusai Read() : egy karaktert olvas Read(char[] buffer, int offset, int count) : tömbbe olvas count darab karaktert ReadLine() : egy sort olvas Peek() : egy karakter előreolvasása Tulajdonságok: EndOfStream: jelzi a streamvégét Kódolás Az Encoding osztály statikus tulajdonságai (pl.: Encoding.UTF8) 13

Feladat 2. Az előzőfeladat kibővítéseként a listadobozban tárolt minden fájlról és könyvtárról írja ki az információkat egy szövegfájlba 14

FileStream Adatok fájlba írása/ fájlból olvasása bájtonként FileStream(string path, FileMode mode) FileStream(string path, FileMode mode, FileAccess access) FileStream(string path, FileMode mode, FileAccess access, FileShare share) FileStream(string path, FileMode mode, FileAccess access, FileShare share, int buffersize) Metódusai Read(byte[] buffer, int offset, int count) ReadByte() Write(byte[] buffer, int offset, int count) WriteByte() Seek(long offset, SeekOrigin origin) Tulajdonságai Length Position 15

Fájlmegnyitás módja: Felsorolás típusok FileMode{ Append hozzáfűzés. Ha nem létezik a fájl, létrehozza Create új fájl. Ha a fájl létezik, akkor felülírja CreateNew új fájl. Ha a fájl létezik, IOException Open fájl megnyitása. Ha a fájl nem létezik, FileNotFoundExc. OpenOrCreate megnyit, vagy létrehoz Truncate törlés és újralétrehozás } A fájlhozzáférés módja FileAccess { Read, ReadWrite, Write} Meghatározza, hogy más streamekmilyen módon férhetnek hozzáehhez a fájlhoz, amíg nyitva van: FileShare { Delete, None, ReadWrite, Write, Read} Egyéb beállítások FileOptions { Asynchronous, DeleteOnClose, Encrypted, None, RandomAccess, SequentialScan, WriteThrough} 16

BinaryReader / BinaryWriter Primitív típusú adatok beolvasását / kiírását teszik lehetővé BinaryReader(Stream input) BinaryReader(Stream input, Encoding encoding) BinaryWriter(Stream input) BinaryWriter(Stream input, Encoding encoding) Metódusaik: ReadX() WriteX(X data) X helyére a primitív típus.net osztálykönyvtárbeli nevét kell behelyettesíteni pl.: ReadDouble(), ReadSingle(), 17

MemoryStream A memóriából tud olvasni / memóriába tud írni MemoryStream(int capacity) MemoryStream(byte[] buffer) MemoryStream(byte[] buffer, bool writable) Metódusai: Read(byte[] buffer, int offset, int count) ReadByte() Write(byte[] buffer, int offset, int count) WriteByte() Seek(long offset, SeekOrigin origin) WriteTo(Stream dest) Tulajdonságai: Capacity Length Position 18

DeflateStream / GZipStream Adatok betömörítésére és kitömörítésére használható DeflateStream(Stream stream, CompressionMode mode) GZipStream(Stream stream, CompressionMode mode) A tömörítés iránya: CompressionMode{ Compress, Decompress} Metódusai: Read(byte[] buffer, int offset, int count) ReadByte() Write(byte[] buffer, int offset, int count) WriteByte() Seek(long offset, SeekOrigin origin) Tulajdonságai: Length Position 19

Feladat 3. Az előzőfeladat bővítése úgy, hogy a listadobozban kijelölt fájlt be lehessen tömöríteni megadott néven, ill. ki lehessen tömörítenik egy megadott helyre. 20