Megosztás a következőn keresztül:


Fájl és stream I/O

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

A fájlok olyan rendezett és elnevezett bájtgyűjtemények, amelyek állandó tárterületet tárolnak. Amikor 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ájtok sorozata, amellyel egy háttértárból olvashat és írhat, amely számos tárolási adathordozó (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 többféle 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 használatával kezelheti a System.IO fájlokat és a könyvtárakat. Lekérheti és beállíthatja például a fájlok és a könyvtárak tulajdonságait, valamint keresési feltételek alapján beolvashatja fájlok és könyvtárak gyűjteményeit.

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

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

  • File – statikus metódusokat biztosít fájlok létrehozásához, másolásához, törléséhez, áthelyezéséhez és megnyitásához, és segít az objektumok létrehozásában FileStream .

  • FileInfo – példánymetódusokat biztosít a fájlok létrehozásához, másolásához, törléséhez, áthelyezéséhez és megnyitásához, és segít az objektumok létrehozásában FileStream .

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

  • DirectoryInfo – példánymetória-megoldásokat biztosít a könyvtárak és alkönyvtárak létrehozásával, áthelyezésével és számbavételével.

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

Fájlrendszermetszet-metódusok hívásakor mindig hatékony kivételkezelést kell biztosítania. További információ: I/O-hibák kezelése.

Ezen osztályok használata mellett 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. A streameket képviselő összes osztály örökli az Stream osztályt. 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.

adatfolyamok három alapvető műveletből áll:

  • Olvasás – adatok átvitele adatfolyamból adatstruktúrába, például bájttö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.

A mögöttes adatforrástól vagy adattártól függően előfordulhat, hogy egy stream csak néhány ilyen képességet támogat. Az osztály például nem támogatja a PipeStream keresést. A CanReadstreamek , CanWriteés CanSeek tulajdonságai határozzák meg a stream által támogatott műveleteket.

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

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

  • IsolatedStorageFileStream – egy elkülönített tárolóban lévő fájl olvasásához és írásához.

  • 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ásához.

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

  • PipeStream – névtelen és nevesített csövek olvasásához és írásához.

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

A streamek aszinkron módon történő használatával kapcsolatban lásd az Aszinkron fájl I/O-ját.

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 bemenethez és kimenethez vannak tervezve. Az olvasó- és írótípusok kezelik a kódolt karakterek bájtokra és bájtokból történő 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 – primitív adattípusok bináris értékekként való olvasásához és írásához.

  • StreamReader és StreamWriter – karakterek olvasásához és írásához kódolási érték használatával a karakterek bájtokká és bájtokból való konvertálásához.

  • StringReader és StringWriter – karakterek sztringek közötti és karakterláncokból történő 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, bináris adatokat azonban nem.

Lásd : Szöveg olvasása fájlból, Útmutató: Szöveg írása fájlba, Útmutató: Karakterek olvasása karakterláncbó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 reagálnia kell a felhasználó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. Aszinkron I/O-műveletek használata Windows 8.x Áruházbeli alkalmazások fejlesztésekor, hogy ne lehessen azt a benyomást kelteni, hogy az alkalmazás leállt.

Az aszinkron tagok a nevükben szerepelnek Async , például a CopyToAsync, FlushAsync, ReadAsyncés WriteAsync a metódusok. Ezeket a metódusokat a async kulcsszavakkal együtt await 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 utal. A tömörítés egy tömörített fájl tartalmának kinyerése, hogy azok felhasználható formátumban legyenek. A System.IO.Compression névtér fájlokat és streameket tömörítő és tömörítő típusokat tartalmaz.

A fájlok és streamek tömörítéséhez és tömörítéséhez gyakran az alábbi osztályokat használják:

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

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

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

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

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

  • GZipStream – a gzip adatformátumú streamek tömörítéséhez és tömörítéséhez.

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

Elkülönített tároló

Az elkülönített tárolás egy adattárolási mechanizmus, amely elkülönítést és biztonságot nyújt azáltal, hogy szabványosított módszereket határoz meg a kód és a mentett adatok társítására. A tároló egy virtuális fájlrendszert biztosít, amelyet a felhasználó, a szerelvény és (opcionálisan) a tartomány elkülönít. Az elkülönített tárolás különösen akkor hasznos, ha az alkalmazás nem rendelkezik engedéllyel a felhasználói fájlok eléréséhez. 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 elkülönített tárolás megvalósításakor gyakran az alábbi osztályokat használják:

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

  • IsolatedStorageFile – egy elkülönített tárolóterü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árterületen belül.

Lásd: Izolált Storage.

I/O-műveletek Windows Store-alkalmazásokban

A Windows 8.x Áruházbeli alkalmazásokhoz készült .NET számos típust tartalmaz a streamek olvasásához és írásához; 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 konvertálhat .NET-keretrendszer streamek és Windows-futtatókörnyezet streamek között. További információ: Átalakítás .NET-keretrendszer adatfolyamok és Windows-futtatókörnyezet adatfolyamok vagy WindowsRuntimeStreamExtensionsközött.

A Windows 8.x Áruházbeli alkalmazások I/O-műveleteiről a fájlok olvasását és írását ismertető rövid útmutatóban talál további információt.

I/O és biztonság

Ha a System.IO névtérben lévő osztályokat használja, a fájlokhoz és könyvtárakhoz való hozzáférés szabályozásához be kell tartania 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). Ez a követelmény minden követelményen kívül van FileIOPermission . Az ACL-eket programozott módon is kezelheti. További információ: Access Control 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 található fájlokhoz. Ezért ne használja azokat az I/O-osztályokat, amelyek egy fizikai fájl elérési útját igénylik az interneten vagy intraneten letöltött kód írásakor. 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 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 feladatokhoz 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 Storage
    Egy olyan adattárolási mechanizmust ismertet, amely elkülönítést és biztonságot nyújt a kód mentett adatokkal való társításának szabványosított módjainak meghatározásával.

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

  • Memórialeképezési fájlok
    Ismerteti a memórialeképezett fájlokat, amelyek a virtuális memóriában lévő lemezen lévő fájlok tartalmát tartalmazzák. A memórialeképezett fájlokkal nagyon nagy méretű fájlokat szerkeszthet, és megosztott memóriát hozhat létre a folyamatközi kommunikációhoz.