Fájlkezelés

Ennyi már elég is az érettségihez

Kétféle fájlelérést nézünk meg:

Fájlok megnyitása

A fájlokhoz való hozzáférés a FileStream osztály segítségével történik.

Dim f As New FileStream(fajlnev, mód, hozzáférés, megosztás)

 

Mód:

ˇ        FileMode.Create: Új fájl létrehozása. Ha a fájl már létezik, akkor felülírja.

ˇ        FileMode.CreateNew: Új fájlt hoz létre, ha a fájl már létezik, akkor hibaüzenetet kapunk.

ˇ        FileMode.Append:  Hozzáfűzésre nyitja meg a fájl, vagy létrehozza, ha még nem létezik. A fájl végére pozícionál. Csak FileAccess.Write hozzáféréssel használható

ˇ        FileMode.Open: Megnyitja a létező fájlt.

ˇ        FileMode.OpenOrCreate: Ha a fájl már létezik, akkor megnyitja, ha nem létezik, akkor létrejön.

ˇ        FileMode.Truncate: Létező fájl megnyitása és a benne lévő adatok törlése.

Hozzáférés:

ˇ        FileAccess.Read: Csak olvasásra nyitjuk meg a fájlt

ˇ        FileAccess.Write: Csak írásra nyitjuk meg a fájlt

ˇ        FileAccess.ReadWrite: Írásra és olvasásra is megnyitjuk a fájlt.

Megosztás:

ˇ        FileShare.None: A fájl nem osztható meg

ˇ        FileShare.Read: Csak olvasásra osztjuk meg a fájlt

ˇ        FileShare.Write: Csak írásra osztjuk meg a fájlt

ˇ        FileShare.ReadWrite: Írásra és olvasásra is megosztjuk a fájlt.

 

 

Fájl bezárása

 

Szöveges fájlok kezelése
Szöveges fájlok kezelésére a StreamWriter és StreamReader osztályokat használjuk
Szövegsorok fájlba írása:

 

A legegyszerűbben (az érettségihez ez pont elég)


Dim olvasó As New IO.StreamReader("homers.txt") StreamReader objektum létrehozása az homers.txt fájl kezeléséhez
Dim Sor(100) As String
        

        Do Until  olvasó.EndOfStream ' adatok beolvasás soronként
            
Adatok_száma Adatok_száma + ' Itt számolom meg, hogy hány adat van
           
Sor(Adatok_száma) olvasó.ReadLine ' beolvasás soronkén
        
Loop

olvasó.Close() 'Bezárás. Ilyenkor ürül a puffer is ..
 


Dim As Integer
Dim 
Fíró As New IO.StreamWriter("kirendezett.txt")StreamWriter objektum létrehozása 
        
For To Adatok_száma
            Fíró.WriteLine(Tar(J).Város & 
", " Format(Tar(J).T_közép, "0.0 °C"))
        
Next J
Fíró.Close()


Ez már komplikáltabb


Dim As New FileStream("szoveg.txt", FileMode.OpenOrCreate, FileAccess.Write)  'FileStream objektum létrehozása
Dim sw As New StreamWriter(f) 'StreamWriter objektum létrehozása az f fájl kezeléséhez
f.Seek(0, SeekOrigin.End'Fájl végére pozícionálunk
sw.WriteLine(txtKiir.Text) 'Kiírunk egy sort a fájlba (illetve a pufferba). Write metódus használatakor nem kerül sortörés a szöveg végére.
sw.Flush() 'Pufferürítés. Ilyenkor kerül kiírásra a fájlba a pufferban lévo szöveg
sw.Close() 'Bezárás. Ilyenkor is ürül a puffer...
f.Close() 'filestream bezárása

Sorok beolvasása:
Dim fi As New FileStream("szoveg.txt", FileMode.Open) ''FileStream objektum létrehozása, megnyitva a már létezo fájlt
Dim sr As New StreamReader(fi)  'StreamReader objektum létrehozása az f fájl kezeléséhez
Do While sr.Peek >'ciklus indul, amíg nincs vége a fájlnak (Peek -1 értéke esetén vége van...)
txtBeolvas.Text &sr.ReadLine() & ControlChars.CrLf  'a beolvasott sort hozzáfuzzük egy stringhez és sortörést teszünk a végére. (Read metódussal karakterenként olvashatunk be)
Loop
sr.Close() 
fi.Close()

Bináris
Bináris kezeléshez a BinaryWriter és a BinaryReader osztályokat használjuk.
Fájl írása
dim szam As Char
dim As New System.IO.FileStream(fajlnev, IO.FileMode.Create, IO.FileAccess.Write)
Dim bw As New System.IO.BinaryWriter(f) '
bw.Write(szam)
bw.Close()
f.Close()
Fájl olvasása
Fájlok olvasása történhet valóban binárisan:
dim As New System.IO.FileStream(fajlnev, IO.FileMode.Create, IO.FileAccess.Write)
Dim br As New System.IO.BinaryReader(f) '
dim buffer(100As Byte
br.Read(buffer,0,100)
br.Close()
Vagy használhatunk kényelmesebb módszert, azokat a metódusokat, amelyek a megfelelo adattípusú értékeket adják vissza. Ekkor persze tudni kell, hogy a következo beolvasandó adat milyen típusú. Az ilyen beolvasások után automatikusan annyit ugrik a fájlmutató, amekkora adatot beolvastunk.
dim As New System.IO.FileStream(fajlnev, IO.FileMode.Create, IO.FileAccess.Write)
Dim br As New System.IO.BinaryReader(f) '
dim szam As Char
szam
=br.ReadByte()
br.Close()
f.Close()