Források és bináris fájlok


Szöveges, bináris állományok, adatfolyamok. Számítógépünk operatív tára kisméretű a tárolni kívánt adatmennyiséghez képestés könnyen felejt: ki sem kell kapcsolni a számítógépet, elég kilépni a programból, és a memóriában tárolt változók értéke máris elvész.

Emiatt már az első számítógépek, amelyek a ferritgyűrűs tárolók után készültek, háttértárat alkalmaztak, amelyen az éppen nem használt programokat, és az éppen nem használt adatokat tárolták.

A tárolási egység a lemezfájl, amely logikailag összefüggő adatok összessége. A logikai fájl a lemez fizikai szervezésével való összekapcsolása, a programok számára az elérés biztosítása, a fájlrendszer kialakítása és kezelése az operációs rendszer feladata. Az alkalmazói programok a lemezfájlokra nevükkel hivatkoznak. A műveletek elkülönülnek aszerint, hogy kezeljük-e a fájl tartalmát, vagy sem.

Stream mint file

Például, egy fájl átnevezéséhez, vagy letörléséhez nem szükséges a tartalmának kezelése, elég a neve. A fájl neve tartalmazhatja az elérési források és bináris fájlok is, ha nem tartalmazza, fejlesztés alatt a projektünk könyvtára az alapértelmezett, míg a lefordított program futtatásakor az exe fájl könyvtára az alapértelmezett. Előkészületek a fájlkezeléshez Ellentétben a grafikával vagy a vezérlőkkel, a fájlkezelő névtér nem kerül be a formunkba, az új projekt készítésekor.

Ezt nekünk kell megadni, a form1. Bináris fájl ismert, állandó hosszúságú rekordszerkezettel.

források és bináris fájlok

Szövegfájl, változó hosszúságú szövegsorokból, a sorok végén soremeléssel. Ha csak saját magunknak készítjük mindig ugyanazt a fájlt használva, akkor egyszerű és gyors módszer a névmegadásra. Ilyenkor a fájl nevét a dialógusablakok FileName tulajdonsága tárolja.

Használatával elejét vehetjük néhány hibának: nem létező fájl megnyitása, fontos adatfájl véletlen felülírása. Amennyiben a nevekben különböző elérési út található, az állomány másik könyvtárba kerül. A lemezen egy új fájl jön létre, a forrásfájl tartalmával.

Szövegfájl

A szövegfájlnál nem kell használni, de az összes többi fájlnál a bájtokat tartalmazó és a rekordokat tartalmazó bináris is ezt kell alkalmazni.

Források és bináris fájlok üzemmód értékei: FileMode::Append a szövegfájl végére állunk, és írás üzemmódot kapcsolunk be. Ha a fájl nem létezik, új fájl készül. FileMode::Create ez a mód új fájlt készít. Ha a fájl már létezik, felülíródik.

Hogyan beágyazása Media fájlok egy Delphi Végrehajtható (RC / .RES)

Az elérési út könyvtárában az aktuális felhasználónak írási joggal kell rendelkeznie. FileMode::CreateNew ez a mód is új fájlt készít, de ha a fájl már létezik, nem írja felül, hanem kivételt kapunk.

Általában, ha már a fájl készítésen túl vagyunk, pl. FileMode::OpenOrCreate a létező fájlt megnyitjuk, ha nem létezik, készítünk egy adott nevű források és bináris fájlok.

FileMode::Truncate megnyitjuk a létező fájlt, és a tartalmát töröljük. A fájl hossza 0 bájt lesz. A FileStream referencia osztály Amennyiben a fájlokat bájtonként, vagy binárisként kezeljük, deklaráljunk egy a fájl eléréséhez egy FileStream-et. A FileStream típusú osztálypéldányt nem gcnew-val hozzuk létre, hanem File::Open -nel, ezáltal a fizikai lemezfájl és a FileStream összerendelődnek.

Létrehozás[ szerkesztés ] A forráskódot általában emberek hozzák létre, egyszerűen begépelve az adott szöveget egy szövegfájlba.

A FileStream segítségével a lemezfile aktuális filepozíciója elérhető, és mozgatható. A pozíció és a mozgatás mértékegysége a bájt, adattípusa bites egész, hogy 2 gigabájtosnál nagyobb fájlokat is kezelni tudjon.

források és bináris fájlok

Gyakran használt tulajdonságai és metódusai: Length: olvasható tulajdonság, fájl aktuális mérete bájtban. Name: a lemezfájl neve, amit megnyitottunk. A következő írási művelet erre a pozícióra fog írni, a következő olvasás innen fog olvasni.

Tímár András: Collabora Online 2.0, a saját felhőben futtatható dokumentumszerkesztő

Seek mennyit, mihez képest metódus a fájlpozíció mozgatására. A Position tulajdonsághoz képest megadható, hogy honnan értelmezzük az eltolást: a fájl elejétől SeekOrigin::Beginaz aktuális pozíciótól Források és bináris fájloka fájl végétől SeekOrigin::End. Ezt a műveletet kell akkor is használni, ha a FileStream-re BinaryReader-t vagy BinaryWriter-t kapcsolunk, azoknak nincs Seek metódusa.

Az operációs rendszer szintjén a fájlolvasás egy bájt típusú tömbbe történik, mert ezek a függvények egy egyelemű, források és bináris fájlok tartalmazó tömb olvasásaként vannak megvalósítva. Az olvasott adatok az eltolás indexű elemnél kezdődnek, források és bináris fájlok darab számú lesz belőlük.

források és bináris fájlok

Visszatérő értéke, hogy hány bájtot sikerült olvasni. Az írást az eltolás indexű elemnél kezdi, és darab számú elemet ír ki. Flush void : a buffereket aktualizálja, ha még a memóriában voltak adatok, kiírja a lemezre. Close : a FileStream bezárása.

Adattárolás[ szerkesztés ] Egyszerűségük miatt a szöveges fájlokat gyakran használják adattárolásra, vagy jegyzetek gyors készítésére. Elkerülhető velük néhány más fájlformátumokkal megjelenő probléma, mint a bájtsorrenda kitöltő bájtok, vagy a gépi szó hossza közötti eltérések. Ráadásul a fájl sérülése esetén könnyű akár manuálisan kijavítani a hibát és folytatni a fájl feldolgozását. A szövegfájlok hátránya alacsony entrópiájuk — más megközelítésben viszont veszteségmentes tömörítéssel könnyen csökkenthető a források és bináris fájlok. Az egyszerű szövegfájl értelmezéséhez nincs szükség metaadatokraezért az adatokat nem tartalmazó szöveges fájl akár nulla bájt hosszúságú is lehet.

A fájlokat használat után mindig be kell csukni, hogy elkerüljük az adatvesztést és az erőforrások kifogyását. A BinaryReader referencia osztály Amennyiben nem bájt típusú bináris adatokat szeretnénk fájlból olvasni, a megnyitott FileStream-et argumentumként megadva a konstruktorban BinaryReader-t használunk. A BinaryReader-t a szabványos gcnew operátorral hozzuk létre.

Fontos megjegyezni, hogy a BinaryReader nem képes megnyitni a lemezfájlt, és hozzárendelni a FileStream-hez. A file pozíció az olvasott adat hosszával inkrementálódik. Létrehozása a BinaryReader-hez hasonlóan, gcnew operátorral történik.

Néhány elterjedt fájltípus rövid leírása

A különbség bináris opciók hallgatni, hogy míg a Reader adott visszatérő adattípusú metódusokat tartalmaz, a Writer adott paraméterű, visszatérő érték nélküli metódust tartalmaz, nagyszámú túlterhelt változatot.

A bináris fájlkezelés összefoglaló ábrája az alábbiakban látható: IV. Például bites egész típusú adat tárolásánál, amely 4 bájtot foglal, a es indexű adat igazából a Ekkor — mivel a filemutatót bárhova mozgathatjuk — tetszőleges random elérésről beszélünk. A bináris fájlokat csak az a program tudja feldolgozni, aki ismeri a rekordszerkezetét, vagyis források és bináris fájlok az a program, ami létrehozta.

A szövegfájlok változó hosszúságú, ember által is olvasható sorokból állnak. A változó sorhossz miatt a szövegfájlok csak szekvenciálisan kezelhetők: a A fájl megnyitása után nem tudjuk megmondani, hogy a fájlban hányadik bájton kezdődik a A szöveges állományok források és bináris fájlok alkalmazása a különböző programok közti kommunikáció.

Mivel olvashatók például Források források és bináris fájlok bináris fájlok, képesek vagyunk feldolgozni egy másik program által készített szövegfájlt. A szövegfájlokat használják például az adatbáziskezelők mentésre ott dumpnak hívják a szövegfájlt, ami SQL utasításokat tartalmaz, amik a lementett adatbázist egy üres rendszeren létrehozzákaz Excellel való kommunikációra a vesszővel vagy tabulátorral elválasztott fájl-ok CSV kiterjesztésselvalamint az e-mailek is szövegfájlként mennek a küldő és a fogadó szerver között.

A mérőberendezések is gyakran készítenek a mérésből valamilyen szöveges fájlt, amelyben soronként egy mérési adat szerepel, hogy tetszőleges programmal akár Excellel a mérést végző felhasználó feldolgozhassa, kirajzolhassa az eredményeket. A szövegfájlok kezelését a StreamReader és a StreamWriter típusú referencia változókkal oldhatjuk meg. A gcnew operátor után a konstruktorban a fájl nevét adhatjuk meg, nem kell FileStreamet definiálnunk.

Ennek oka, hogy a StreamReader és a StreamWriterkizárólagosan használja a lemezfájlt, emiatt elkészítheti magának a saját FileStreamjét BaseStreamamivel a programozónak nem kell foglalkoznia. A StreamReader leggyakrabban használt metódusa a ReadLineamely a szövegfájl források szakzsargon opció bináris fájlok sorát olvassa be, és leggyakrabban használt tulajdonsága az EndOfStream, amely a fájl végén igazzá válik.

Vigyázat: az EndOfStream az utolsó olvasás állapotát mutatja, a fájl végén a ReadLine nulla források és bináris fájlok sztringgel tér vissza, és az EndOfStream értéke true lesz! Vagyis a szokásos elöltesztelt ciklus használható while! A StreamWriter leggyakrabban használt metódusa a WriteLine Stringamely a paraméterként megkapott sztringet és források és bináris fájlok soremelést kiír a textfájlba. Létezik még Write String is, amely nem ír soremelést. Az alábbi, önállóan, segédfüggvények és inicializáló rész nélkül nem működő programrészlet egy CSV kiterjesztésű, pontosvesszőkkel elválasztott sorokból álló szövegfájlt dolgoz fel.

Források és bináris fájlok felhasználóval kijelölteti a feldolgozandó fájlt, beolvassa források és bináris fájlok adatokat soronként, valamit kiszámol az adatokból, majd a beolvasott sor végére írja az eredményt. A feldolgozás végén számol egy összesített eredményt is.

Informatika

Az összes kimenetet egy átmeneti fájlba írja, hiszen az eredeti szövegfájl olvasásra van nyitva. Ha kész a feldolgozás, az eredeti fájlt letörli, és az átmeneti fájlt átnevezi források és bináris fájlok eredeti nevére. Eredmény: az eredeti szövegfájlba belekerültek a számítás eredményei.

források és bináris fájlok

A memóriában létrehozott adatfolyamnak nagy előnye a sebessége a memória legalább egy nagyságrenddel gyorsabb, mint a háttértárhátránya a kisebb méret, és az a tulajdonság, hogy források és bináris fájlok programból való kilépéskor tartalma elvész. Létrehozása a gcnew operátorral történik, megadható paraméteres konstruktor, ekkor beállíthatjuk a MemoryStream maximális méretét. Amennyiben nem adtunk meg paramétert, a MemoryStream dinamikusan foglal memóriát az írás műveletnél. Az osztály használatának két előnye van a tömbhöz képest: az automatikus helyfoglalás, valamint ha kinőnénk a memóriát, a MemoryStream könnyen FileStream-mé alakítható át, a gcnew helyett File::Open utasítással.