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:
A kifejezetten fájlműveletekhez kapcsolódó típusok , például Filea Directory . FileInfoés DirectoryInfoa . nem szerepelnek a .NET-ben Windows 8.x Áruházbeli alkalmazásokhoz. Ehelyett használja a Windows-futtatókörnyezet névterében szereplő Windows.Storage típusokat, például StorageFile és StorageFolder.
Az elkülönített tároló nem érhető el; helyett használja az alkalmazásadatokat.
A felhasználói felületi szál blokkolásának megakadályozásához használjon aszinkron metódusokat, például ReadAsync és WriteAsync.
Az elérésiút-alapú tömörítési típusok ZipFileZipFileExtensions nem érhetők el. Ehelyett használja a névtérben lévő Windows.Storage.Compression típusokat.
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.
Kapcsolódó témakörök
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.