File és stream kezelés. Dr. Kotsis Domokos Nagy Tibor

Hasonló dokumentumok
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

Input Output Műveletek

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

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

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

BME MOGI Gépészeti informatika 13.

Programozási nyelvek Java

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

Informatika terméktervezőknek

.NET alapszolgáltatások 2.

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

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

Pénzügyi algoritmusok

BME MOGI Gépészeti informatika 7.

BME MOGI Gépészeti informatika 4.

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

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

ELTE SAP Excellence Center Oktatóanyag 1

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

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Objektumorientált programozás C# nyelven III.

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

BME MOGI Gépészeti informatika 6.

Kalapácsvetés 2016 szöveges

Objektumorientált programozás C# nyelven

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

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.

JAVA PROGRAMOZÁS 8.ELŐADÁS

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

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

Programozási nyelvek II.: JAVA

Objektumorientált programozás C# nyelven

1. Alapok. Programozás II

Programozási nyelvek Java

Objektumorientált Programozás VI.

Access adatbázis elérése OLE DB-n keresztül

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

Objektum Orientált Programozás IV.

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Objektumorientált Programozás III.

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

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

BME MOGI Gépészeti informatika 1.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

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

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

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Objektumorientált Programozás IV.

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

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

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

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

Programozás II. labor

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

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.

C# gyorstalpaló. Készítette: Major Péter

C++ programozási nyelv Konstruktorok-destruktorok

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

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

BME MOGI Gépészeti informatika 5.

Objektumorientált programozás C# nyelven III.

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

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

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

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

Programozási nyelvek Java

Java gyakorlat feladatai e s megolda sai ( )

Vizuális programozás gyakorlat

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Az új be- és kimenet könyvtár

Powershell 2. gyakorlat

7. gyakorlat Sorozatok, Fájlkezelés

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

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Adatbázisok webalkalmazásokban

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

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

PROGRAMOZÁS ALAPFELADATOK

Szoftvertervezés és -fejlesztés I.

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

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

C#, OOP. Osztályok tervezése C#-ban

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

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP #14 (referencia-elv)

TCP/IP kapcsolat Java nyelven

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Összefoglaló. // megjegyzés /* megjegyzés */ ; // üres utasítás { } // blokk kezdet és vég

Objektumorientált programozás C# nyelven

Programozási nyelvek JAVA EA+GY 1. gyakolat

Osztályok. 4. gyakorlat

Programozási nyelvek II.: JAVA, 4. gyakorlat

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

3. Osztályok II. Programozás II

Objektumorientált programozás C# nyelven

BME MOGI Gépészeti informatika 8.

Powershell 1. gyakorlat

Segédanyag: Java alkalmazások gyakorlat

Átírás:

File és stream kezelés Dr. Kotsis Domokos Nagy Tibor

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.

File-ok és elérésük A System.IO névtér szükséges File, FileInfo Fájlok és jellemzőik kezelése Directory, DirectoryInfo Könyvtárak és jellemzőik kezelése Path Fájlnevet és elérési utat tartalmazó sztring részekre bontására használható

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) Open(String, FileMode, FileAccess, FileShare) Open(string path, FileMode mode, FileAccess access, FileShare share) OpenRead(string path) OpenText(string path) OpenWrite(string path)

A FileInfo osztály Metódusai: AppendText CopyTo Create CreateText Delete Equals Finalize GetAccessControl GetType MoveTo Open OpenRead OpenText OpenWrite Refresh Replace SetAccessControl

Tulajdonságai: Attributes CreationTime CreationTimeUtc Directory DirectoryName Exists Extension FullName IsReadOnly LastAccessTime LastAccessTimeUtc LastWriteTime LastWriteTimeUtc Length Name A FileInfo osztály

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

A Path osztály Statikus osztály, melynek metódusai fájlnevet és elérési utat tartalmazó sztring részekre bontására használhatóak Metódusai: GetDirectoryName(string path) GetFileName(string path) GetExtension(string path) GetFileNameWithoutExtension(string path)

Kivételek FileNotFoundException IOException

Feladat Készítsen programot, a File osztály használatával, mely megadott file-ról másolatot készít megadott helyre, megadott néven!

using System.IO; File másolás private void be_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) ki.focus(); private void ki_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) try File.Copy(be.Text, ki.text); Üzenet.Text = "Kész.";

Hiba vizsgálat catch (FileNotFoundException) Üzenet.Text = "Nem létezik az input file!"; catch (IOException) Üzenet.Text = "Már létezik a cél file!"; catch Üzenet.Text = "Hiba másolás közben!";

Feladat Készítsen programot, a FileInfo osztály használatával, mely egy file-ról megadja annak méretét, a készítés és az utolsó használat időpontját.

using System.IO; File adatok private void textbox1_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) Méret.Text = ""; Készítés.Text = ""; Utolsó.Text =""; FileInfo vizsgálandó = new FileInfo(textBox1.Text); if (vizsgálandó.exists) Méret.Text = vizsgálandó.length.tostring(); Készítés.Text = vizsgálandó.creationtime.tostring(); Utolsó.Text = vizsgálandó.lastaccesstime.tostring(); else Üzenet.Text = "Nem létezik az input file!";

Stream-ek def. Adatfolyamok: pl. (de nem csak) a file-okból, vagy file-okba történő adatáramlás. Egymáshoz is kapcsolódhatnak.

Stream-ek I. Egy adott médiához kapcsolódnak, onnan/oda írnak/olvasnak byte-okat. Memória Háttértár (fájl) Hálózat Soros port System.IO.Stream leszármazottjai: System.IO.FileStream System.IO.MemoryStream System.IO.NetworkStream

Stream-ek II. Meghatározott tartalmat írnak, olvasnak: System.IO.StreamReader System.IO.StreamWriter System.IO.StringReader System.IO.StringWriter System.IO.BinaryReader System.IO.BinaryWriter (szöveg kódolással) (stringek) (bináris tart.)

Stream-ek megnyitása, zárása Megnyitás: A megfelelő stream-osztály példányának létrehozásával pl.: StreamReader sr = new StreamReader("proba.txt"); FileStream fs = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, FileShare.None); A File, vagy a FileInfo osztály megfelelő metódusai (Create, Open, OpenRead, OpenWrite, CreateText, OpenText, AppendText) segítségével pl.: StreamReader sr=file.opentext("proba.txt"); FileStream fs = File.Open(textBox1.Text, FileMode.Open, FileAccess.Read, FileShare.None); Bezárás: A stream Close() metódusával pl.: sr.close();

A File ill FileInfo osztályok egyes stream nyitó metódusai FileStream streamet hoz létre: Create( ) Open( ) OpenRead( ) OpenWrite( ) StreamReader streamet hoz létre: OpenText( ) StreamWriter streamet hoz létre: CreateText( ) AppendText( )

Pozícionálás streamek-ben A stream-ek nagy 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-ek eseté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 offset byte-tal a fájlpointer. (FileStream, MemoryStream, BufferedStream)

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

FileStream konstruktor 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)

Felsorolás típusok I. Fájlmegnyitás módja: 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 megnyitás (ha a fájl nem létezik, FileNotFoundExc.) OpenOrCreate megnyit, vagy létrehoz Truncate törlés és újra létrehozás

Felsorolás típusok II. A fájlhozzáférés módja FileAccess Read, ReadWrite, Write Meghatározza, hogy más streamek milyen 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

Tulajdonságok CanRead CanWrite Length Position logikai logikai byte-okban get, set

Metódusok Close() Flush() Seek(long offset, SeekOrigin origin) (origin: Begin, End, Current ) Read(byte[] buffer, int offset, int count) ReadByte() (Egésszé alakított byte érték, vagy -1) Write(byte[] buffer, int offset, int count) WriteByte()

Feladat Készítsen programot, mely a FileStream osztály használatával beolvassa egy megadott text file tartalmát egy ListBox-ba. Használja a Read() metódust!

Megoldás private void textbox1_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream fs = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, FileShare.None); byte[] bytetext = new byte[fs.length]; string st = ""; fs.read(bytetext, 0, bytetext.length); for (int i=0; i<fs.length; i++) if (bytetext[i]!= (char)(13)) st = st + (char)bytetext[i]; else listbox1.items.add(st); i++; st = ""; if (st!= "") listbox1.items.add(st); fs.close();

Feladat Készítsen programot, mely a FileStream osztály használatával beolvassa egy megadott text file tartalmát egy ListBox-ba. Használja a ReadByte() metódust!

StreamWriter I. Karakterek 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)

StreamWriter II. 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)

Feladat Készítsen programot, ami az Ön által begépelt szöveget beviszi a megadott új file-ba. Használja a StreamWriter-t, és a File osztály metódusait!

Megoldás private void sor_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) StreamWriter szövegem = File.AppendText(file.Text); szövegem.writeline(sor.text); szövegem.close(); sor.text = ""; private void button1_click(object sender, EventArgs e) this.close();

Feladat Készítsen programot, ami az Ön által begépelt szöveget beviszi a megadott új file-ba. Használja a StreamWriter-t, és a StreamWriter konstruktorát!

Megoldás public partial class Form1 : Form bool nyitott= false; StreamWriter szövegem; private void sor_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) if (!nyitott) szövegem = new StreamWriter(file.Text); nyitott = true; szövegem.writeline(sor.text); sor.text = ""; private void button1_click(object sender, EventArgs e) this.close(); szövegem.close();

StreamReader I. 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)

StreamReader II. 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 stream végét Kódolás Az Encoding osztály statikus tulajdonságai (pl.: Encoding.UTF8)

Feladat Készítsen programot, ami beolvassa egy magadott szöveg file sorait egy ListBox-ba. Használja a StreamReader-t, és a File osztály Opentext() metódusát!

Szöveg beolvasása private void file_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) string buffer; StreamReader szövegem = File.OpenText(file.Text); while ((buffer = szövegem.readline())!= null) listbox1.items.add(buffer); szövegem.close();

BinaryReader / BinaryWriter Elemi típusú adatok beolvasását / kiírását teszik lehetővé. Másik stream-re épül! BinaryReader(Stream input) BinaryReader(Stream input, Encoding encoding) BinaryWriter(Stream input) BinaryWriter(Stream input, Encoding encoding) Metódusaik: ReadX() Write(data) X helyére az elemi típus.net osztálykönyvtárbeli nevét lehet behelyettesíteni pl.: ReadDouble(), ReadSingle(),

Feladat Készítsen programot, mely kiírja, majd beolvassa egy ListBox-ba az alábbi adatokat: Név (string) Kor (int) Súly (double) Használja a BinaryWriter/Reader és a FileStream stream-eket!

Kiírás private void button1_click(object sender, EventArgs e) string filename = "f:\\eb.txt"; FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None); BinaryWriter wr = new BinaryWriter(fs); wr.write("kiss Pál"); wr.write("kora: "); wr.write(23); wr.write("súlya: "); wr.write(85.5); wr.close(); fs.close(); button2.enabled = true;

Beolvasás private void button2_click(object sender, EventArgs e) string filename = "f:\\eb.txt"; listbox1.items.add("file neve: " + filename); FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None); BinaryReader rd = new BinaryReader(fs); string név = rd.readstring(); string korstring = rd.readstring(); int kor = rd.readint32(); string súlystring = rd.readstring(); double súly = rd.readdouble(); listbox1.items.add(név); listbox1.items.add(korstring + kor.tostring()); listbox1.items.add(súlystring + súly.tostring()); rd.close(); fs.close();

Feladat Készítsen programot, mely kiírja, majd belovassa egy ListBox-ba az alábbi adatokat: Név (string) Kor (int) Súly (double) Használja a BinaryWriter/Reader-t és a File osztály metódusait!

Kiírás private void button1_click(object sender, EventArgs e) string filename = "f:\\eb.txt"; BinaryWriter wr = new BinaryWriter(File.Create(fileName)); wr.write("kiss Pál"); wr.write("kora: "); wr.write(23); wr.write("súlya: "); wr.write(85.5); wr.close(); button2.enabled = true;

Beolvasás private void button2_click(object sender, EventArgs e) string filename = "f:\\eb.txt"; listbox1.items.add("file neve: " + filename); BinaryReader rd = new BinaryReader(File.Open(fileName, FileMode.Open)); string név = rd.readstring(); string korstring = rd.readstring(); int kor = rd.readint32(); string súlystring = rd.readstring(); double súly = rd.readdouble(); listbox1.items.add(név); listbox1.items.add(korstring + kor.tostring()); listbox1.items.add(súlystring + súly.tostring()); rd.close();

Feladat Készítsen programot, mely az első száz számot kiírja egy bináris file-ba. Használja a BinaryWriter stream-et!

Bináris output private void textbox1_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream binfájlom = new FileStream(textBox1.Text,FileMode.CreateNew); BinaryWriter bw = new BinaryWriter(binfájlom); for (int i = 0; i < 100; i++) bw.write(i); bw.close(); binfájlom.close(); textbox1.text = "Kész!";

Feladat Készítsen programot, ami beolvassa az előző feladatban kiírt bináris file tartalmát egy ListBox-ba. Használja a BinaryReader stream-et! Megjegyzések: 1. Használja a PeekChar() metódust, mely -1-et ad vissza, ha nincs több karakter. 2. Használja a ReadInt32() metódust.

Bináris input private void textbox1_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream binfájlom = new FileStream(textBox1.Text, FileMode.Open); BinaryReader br = new BinaryReader(binfájlom); while (br.peekchar()!= -1) listbox1.items.add(br.readint32().tostring()); br.close(); binfájlom.close(); textbox1.text = "Kész!";

DeflateStream / GZipStream Adatok tömörítésére és kicsomagolására használható. Másik stream használatára épül! DeflateStream(Stream, CompressionMode) GZipStream(Stream, CompressionMode) DeflateStream(Stream, CompressionMode, Boolean) GZipStream(Stream, CompressionMode, Boolean) 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

Feladat Készítsen programot, ami tömörít (becsomagol) egy megadott file-ot. A program tömböt használjon pufferként! Megjegyzés: 1. Használja a GZipStream-ot. 2. Ne feledkezzék meg a using System.IO.Compression direktíváról.

Tömörítés I. private void be_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) ki.focus(); private void ki_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream infile = new FileStream(be.Text, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[infile.length]; int count = infile.read(buffer, 0, buffer.length); infile.close(); FileStream kimegy = new FileStream(ki.Text, FileMode.CreateNew, FileAccess.Write); GZipStream tömör = new GZipStream(kimegy, CompressionMode.Compress); tömör.write(buffer, 0, buffer.length); tömör.close(); kimegy.close();

Feladat Készítsen programot, ami visszaállít (kicsomagol) egy tömörített file-t. A program tömböt használjon pufferként! Megjegyzés: 1. Használja a GZipStream-ot. 2. Ne feledkezzék meg a using System.IO.Compression direktíváról.

Kicsomagolás I. private void ki_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream infile = new FileStream(be.Text, FileMode.Open,FileAccess.Read); GZipStream tömör = new GZipStream(infile, CompressionMode.Decompress); byte[] buffer = new byte[30000]; /*Nem tudjuk, mekkora!*/ int count = tömör.read(buffer, 0, buffer.length); infile.close(); tömör.close(); FileStream kimegy = new FileStream(ki.Text,FileMode.CreateNew, FileAccess.Write); kimegy.write(buffer, 0, count); kimegy.close();

Feladat Készítsen programot, ami tömörít (becsomagol) egy megadott file-ot. A program byte-okat mozgasson! Megjegyzés: 1. Használja a GZipStream-ot. 2. Ne feledkezzék meg a using System.IO.Compression direktíváról.

Tömörítés II. private void ki_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream infile = new FileStream(be.Text, FileMode.Open, FileAccess.Read); byte buffer; FileStream outfile = new FileStream(ki.Text, FileMode.Create, FileAccess.Write); GZipStream tömör = new GZipStream(outfile, CompressionMode.Compress); for (int i = 1; i < infile.length+1; i++) buffer = (byte)infile.readbyte(); tömör.writebyte(buffer); tömör.close(); infile.close(); outfile.close();

Feladat Készítsen programot, ami visszaállít (kicsomagol) egy tömörített file-t. A program byte-okat mozgasson! Megjegyzés: 1. Használja a GZipStream-ot. 2. Ne feledkezzék meg a using System.IO.Compression direktíváról.

Kicsomagolás II. private void ki_keypress(object sender, KeyPressEventArgs e) if (e.keychar == (char)(13)) FileStream infile = new FileStream(be.Text, FileMode.Open, FileAccess.Read); GZipStream tömör = new GZipStream(infile, CompressionMode.Decompress); byte buffer ; FileStream kimegy = new FileStream(ki.Text, FileMode.Create, FileAccess.Write); buffer = (byte)tömör.readbyte(); while (buffer!= 255) kimegy.writebyte(buffer); buffer = (byte)tömör.readbyte(); kimegy.close(); infile.close(); tömör.close();

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

Feladat Olvasson be két TextBox-ból egy-egy stringet, írja ki, majd olvassa vissza egy harmadik TextBox-ba MemoryStream használatával.

Byte tömbök feltöltése private void button1_click(object sender, EventArgs e) int count; byte[] bytearray; byte[] firststring = new byte[textbox1.text.length]; for (int i = 0; i < textbox1.text.length; i++) firststring[i] = (byte)textbox1.text[i]; byte[] secondstring = new byte[textbox2.text.length]; for (int i = 0; i < textbox2.text.length; i++) secondstring[i] = (byte)textbox2.text[i];

Kiírás using (MemoryStream memstream = new MemoryStream(100)) // Az első string kiírása memstream.write(firststring, 0, firststring.length); // A második string kiírása byte-ről byte-ra count = 0; while (count < secondstring.length) memstream.writebyte(secondstring[count++]);

Beolvasás // A pozíció beállítása memstream.seek(0, SeekOrigin.Begin); // Az első 20 byte beolvasása bytearray = new byte[memstream.length]; count = memstream.read(bytearray, 0, 20); // A maradék beolvasása byte-ről byte-ra. while (count < memstream.length) bytearray[count++] = Convert.ToByte(memStream.ReadByte());

Az eredmény a textbox3-ba string s = ""; for (int j = 0; j < bytearray.length; j++) s = s +(char)bytearray[j]; textbox3.text = s;