Fájl és adatfolyam bemenet és kimenet

A fájl- és stream I/O (bemenet/kimenet) az adatok tárolóeszközre vagy tárolóeszközről történő átvitelére utal. A .NET-ben a System.IO névterek olyan típusokat tartalmaznak, amelyek szinkron módon és aszinkron módon is lehetővé teszik az olvasást és az írást adatfolyamokon és fájlokon. Ezek a névterek olyan típusokat is tartalmaznak, amelyek tömörítést és kitömörítést végeznek a fájlokon, valamint olyan típusokat is, amelyek lehetővé teszik a csöveken és soros portokon keresztüli kommunikációt.

A fájl egy rendezett és elnevezett bájtgyűjtemény, amely állandó tárterületet biztosít. Ha fájlokkal dolgozik, a címtár elérési útjaival, a lemeztárolóval, valamint a fájl- és könyvtárnevekkel dolgozik. Ezzel szemben a stream bájtokból álló sorozat, amellyel olvasást és írást végezhet egy háttértárban, amely több tárolóeszköz (például lemezek vagy memória) egyike lehet. Ahogy a lemezeken kívül több háttértár is létezik, a fájlstreameken kívül számos más típusú stream is létezik, például hálózati, memória- és csőstreamek.

Fájlok és könyvtárak

A névtérben található típusok segítségével kezelheti a System.IO fájlokat és könyvtárakat. Lekérheti és beállíthatja például a fájlok és könyvtárak tulajdonságait, és keresési feltételek alapján lekérheti a fájlok és könyvtárak gyűjteményeit.

Az elérésiút-elnevezési konvenciókról és a Windows-rendszerek fájlútvonalának kifejezési módjairól , beleértve a .NET Core 1.1-ben és újabb verziókban támogatott DOS-eszközszintaxisokat, valamint a .NET-keretrendszer 4.6.2-s és újabb verzióiban támogatott DOS-eszközszintaxisokat, tekintse meg a Windows rendszerek fájlútvonal-formátumait.

Íme néhány gyakran használt fájl- és könyvtárosztály:

  • File - statikus módszereket biztosít fájlok létrehozására, másolására, törlésére, áthelyezésére és megnyitására, és segít létrehozni egy objektumot FileStream .

  • FileInfo - a fájlok létrehozására, másolására, törlésére, áthelyezésére és megnyitására szolgáló példánymetódusokat biztosít, és segít létrehozni egy objektumot FileStream .

  • Directory - statikus metódusokat biztosít a könyvtárak és alkönyvtárak létrehozására, áthelyezésére és számbavételére.

  • DirectoryInfo - példánymetódusokat biztosít, amelyek lehetővé teszik könyvtárak és alkönyvtárak létrehozását, áthelyezését és bejárását.

  • Path - metódusokat és tulajdonságokat biztosít a címtár-sztringek platformfüggetlen feldolgozásához.

A fájlrendszer metódusok meghívásakor mindig hatékony kivételkezelést kell biztosítani. További információ: I/O-hibák kezelése.

Ezen osztályok használata mellett a Visual Basic-felhasználók használhatják az osztály által Microsoft.VisualBasic.FileIO.FileSystem a fájl I/O-hoz biztosított metódusokat és tulajdonságokat.

Lásd : Könyvtárak másolása, útmutató: Címtárlista létrehozása és útmutató: Könyvtárak és fájlok számbavétele.

Adatfolyamok

Az absztrakt alaposztály Stream támogatja a bájtok olvasását és írását. Az összes osztály, amely streameket képvisel, a(z) Stream osztálytól öröklődik. Az Stream osztály és származtatott osztályai közös képet nyújtanak az adatforrások és adattárakról, és elkülönítik a programozót az operációs rendszer és a mögöttes eszközök konkrét részleteitől.

A streamek három alapvető műveletet foglalnak magukban:

  • Olvasás – adatok átvitele adatfolyamból adatstruktúrába, például bájtokból álló tömbbe.

  • Írás – adatok átvitele adatfolyamba egy adatforrásból.

  • Keresés – az aktuális pozíció lekérdezése és módosítása egy streamen belül.

Az alapul szolgáló adatforrástól vagy adattártól függően előfordulhat, hogy a streamek csak néhány ilyen képességet támogatnak. Az osztály például nem támogatja a PipeStream keresést. A CanRead, CanWrite és CanSeek tulajdonságai meghatározzák azokat a műveleteket, amelyeket a stream támogat.

Íme néhány gyakran használt streamosztály:

  • FileStream – fájlok olvasásához és írásához.

  • IsolatedStorageFileStream – fájlba való olvasáshoz és íráshoz izolált tárolóban.

  • MemoryStream – a memóriába való olvasáshoz és íráshoz háttértárként.

  • BufferedStream – az olvasási és írási műveletek teljesítményének javítása érdekében.

  • NetworkStream – hálózati aljzatokon keresztüli olvasáshoz és íráshoz.

  • PipeStream – névtelen és elnevezett csöveken keresztüli olvasáshoz és íráshoz.

  • CryptoStream – az adatfolyamok titkosítási átalakításokhoz való csatolásához.

Példa a streamek aszinkron használatára: Aszinkron fájl I/O.

Olvasók és írók

A System.IO névtér típusokat is biztosít a kódolt karakterek streamekből való olvasásához és streamekbe való írásához. A streamek általában bájtos bemenetre és kimenetre vannak tervezve. Az olvasó- és írótípusok kezelik a kódolt karakterek bájtokra és bájtokból való konvertálását, hogy a stream végrehajthassa a műveletet. Minden olvasó- és íróosztály egy streamhez van társítva, amely az osztály tulajdonságán BaseStream keresztül kérhető le.

Íme néhány gyakran használt olvasói és írói osztály:

  • BinaryReader és BinaryWriter – a primitív adattípusok bináris értékekként való olvasásához és írásához.

  • StreamReader és StreamWriter – a karakterek olvasása és írása egy kódolási érték felhasználásával, amely a karaktereket bájtokká alakítja és onnan vissza.

  • StringReader és StringWriter – a karakterek sztringekbe és sztringekből való olvasásához és írásához.

  • TextReader és TextWriter – absztrakt alaposztályként szolgál más olvasók és írók számára, akik karaktereket és sztringeket olvasnak és írnak, de bináris adatokat nem.

Lásd : Szöveg olvasása fájlból, Útmutató: Szöveg írása fájlba, Útmutató: Karakterek olvasása sztringből, és útmutató: Karakterek írása karakterláncba.

Aszinkron I/O-műveletek

Nagy mennyiségű adat olvasása vagy írása erőforrás-igényes lehet. Ezeket a feladatokat aszinkron módon kell elvégeznie, ha az alkalmazásnak rugalmasnak kell maradnia a felhasználó számára. Szinkron I/O-műveletek esetén a felhasználói felületi szál le lesz tiltva, amíg az erőforrás-igényes művelet be nem fejeződik. A Windows 8.x Áruházbeli alkalmazások fejlesztésekor használjon aszinkron I/O-műveleteket, hogy megakadályozza az alkalmazás működésének leállását.

Az aszinkron tagok nevében szerepel a Async, például a CopyToAsync, FlushAsync, ReadAsync és WriteAsync metódusoknál. Ezeket a metódusokat a async és await kulcsszavakkal használhatja.

További információ: Aszinkron fájl I/O.

Tömörítés

A tömörítés a fájlok tárolási méretének csökkentésére vonatkozik. A tömörítés a tömörített fájlok tartalmának kinyerésének folyamata, így azok használható formátumban vannak. A System.IO.Compression névtér fájlokat és adatfolyamokat tömörítő és kicsomagoló típusokat tartalmaz.

A következő osztályokat gyakran használják fájlok és streamek tömörítéséhez és kibontásához:

  • ZipArchive – bejegyzések létrehozására és beolvasására a zip archívumban.

  • ZipArchiveEntry – tömörített fájl ábrázolása.

  • ZipFile – tömörített csomag létrehozásához, kinyeréséhez és megnyitásához.

  • ZipFileExtensions – bejegyzések tömörített csomagban való létrehozásához és kinyeréshez.

  • DeflateStream – streamek tömörítéséhez és kicsomagolásához a Deflate algoritmus használatával.

  • GZipStream – a streamek gzip-adatformátumban történő tömörítéséhez és kitömörítéséhez.

Lásd : Fájlok tömörítése és kinyerés.

Izolált tárolás

Az izolált tárolás olyan adattárolási mechanizmus, amely a kód mentett adatokkal való társításának szabványosított módjaival biztosítja az elkülönítést és a biztonságot. A tároló egy olyan virtuális fájlrendszert biztosít, amelyet a felhasználó, a szerelvény és (opcionálisan) a tartomány elkülönít. Az izolált tárolás különösen akkor hasznos, ha az alkalmazás nem rendelkezik jogosultsággal a felhasználói fájlok elérésére. Az alkalmazás beállításait vagy fájljait a számítógép biztonsági szabályzata által szabályozott módon mentheti.

Az elkülönített tároló nem érhető el Windows 8.x Áruházbeli alkalmazásokhoz; ehelyett használjon alkalmazásadatosztályokat a Windows.Storage névtérben. További információ: Alkalmazásadatok.

Az izolált tárolás megvalósításakor gyakran a következő osztályokat használják:

  • IsolatedStorage – biztosítja az elkülönített tárolók implementációinak alaposztályát.

  • IsolatedStorageFile – egy elkülönített tárterületet biztosít, amely fájlokat és könyvtárakat tartalmaz.

  • IsolatedStorageFileStream - elérhetővé tesz egy fájlt az elkülönített tárolóban.

Lásd: Izolált tároló.

I/O-műveletek Windows Áruházbeli alkalmazásokban

A Windows 8.x Áruházbeli alkalmazásokhoz készült .NET-alkalmazások számos típust tartalmaznak az olvasáshoz és a streamekhez való íráshoz; ez a készlet azonban nem tartalmazza az összes .NET I/O-típust.

Néhány fontos különbség az I/O-műveletek Windows 8.x Áruházbeli alkalmazásokban való használatakor:

Szükség esetén átválthat a .NET-keretrendszer streamjei és a Windows futtatókörnyezeti streamek között. További információért tekintse meg a Hogyan konvertáljunk a .NET-keretrendszer streamjei és a Windows futtatókörnyezeti streamek között vagy WindowsRuntimeStreamExtensions.

A Windows 8.x Áruházbeli alkalmazások I/O-műveleteivel kapcsolatos további információkért tekintse meg a fájlok olvasását és írását ismertető rövid útmutatót.

I/O és biztonság

Ha a System.IO névtérben lévő osztályokat használja, az operációs rendszer biztonsági követelményeit, például a hozzáférés-vezérlési listákat (ACL-eket) kell követnie a fájlokhoz és könyvtárakhoz való hozzáférés szabályozásához. Ez a követelmény az összes FileIOPermission követelményen felül szerepel. Az ACL-ek programozott módon kezelhetők. További információ : Hozzáférés-vezérlési listabejegyzések hozzáadása vagy eltávolítása.

Az alapértelmezett biztonsági házirendek megakadályozzák, hogy az internetes vagy intranetes alkalmazások hozzáférjenek a felhasználó számítógépén lévő fájlokhoz. Ezért ne használja azokat az I/O-osztályokat, amelyek az interneten vagy intraneten letöltött kód írásakor fizikai fájl elérési útját igénylik. Ehelyett használjon elkülönített tárolót .NET-alkalmazásokhoz.

A rendszer csak a stream létrehozásakor végez biztonsági ellenőrzést. Ezért ne nyisson meg egy streamet, majd adja át a kevésbé megbízható kódnak vagy alkalmazástartományoknak.

  • Gyakori I/O-feladatok
    Felsorolja a fájlokhoz, könyvtárakhoz és streamekhez társított I/O-feladatokat, valamint az egyes tevékenységekhez kapcsolódó tartalmakra és példákra mutató hivatkozásokat.

  • Aszinkron fájl I/O
    Az aszinkron I/O teljesítménybeli előnyeit és alapvető működését ismerteti.

  • Izolált tárolás
    Egy olyan adattárolási mechanizmust ismertet, amely a kód mentett adatokkal való társításának szabványosított módjaival biztosítja az elkülönítést és a biztonságot.

  • csövek
    A névtelen és elnevezett csőműveleteket ismerteti a .NET-ben.

  • Memory-Mapped fájlok
    A memórialeképezett fájlokat ismerteti, amelyek a virtuális memóriában lévő lemezen lévő fájlok tartalmát tartalmazzák. A memórialeképezett fájlok segítségével nagy méretű fájlokat szerkeszthet, és megosztott memóriát hozhat létre a folyamatközi kommunikációhoz.