Bestands- en stream-I/O

Bestand en stream I/O (invoer/uitvoer) verwijst naar de overdracht van gegevens naar of van een opslagmedium. In .NET bevatten de System.IO naamruimten typen waarmee zowel synchroon als asynchroon kan worden gelezen en geschreven op gegevensstromen en bestanden. Deze naamruimten bevatten ook typen die compressie en decompressie uitvoeren op bestanden, en typen die communicatie mogelijk maken via pijpen en seriële poorten.

Een bestand is een geordende en benoemde verzameling bytes die permanente opslag heeft. Wanneer u met bestanden werkt, werkt u met mappaden, schijfopslag en bestands- en mapnamen. Een stream is daarentegen een reeks bytes die u kunt gebruiken om van een back-uparchief te lezen en te schrijven. Dit kan een van de verschillende opslagmedia zijn (bijvoorbeeld schijven of geheugen). Net als er verschillende back-upopslagplaatsen zijn, zijn er verschillende soorten streams anders dan bestandsstromen, zoals netwerk-, geheugen- en pijpstreams.

Bestanden en mappen

U kunt de typen in de System.IO naamruimte gebruiken om te communiceren met bestanden en mappen. U kunt bijvoorbeeld eigenschappen ophalen en instellen voor bestanden en mappen en verzamelingen van bestanden en mappen ophalen op basis van zoekcriteria.

Voor padnaamconventies en de manieren om een bestandspad voor Windows systemen uit te drukken, inclusief de syntaxis van het DOS-apparaat die wordt ondersteund in .NET Core 1.1 en hoger en .NET Framework 4.6.2 en hoger, raadpleegt u bestandspadindelingen op Windows systemen.

Hier volgen enkele veelgebruikte bestands- en mapklassen:

  • File - biedt statische methoden voor het maken, kopiëren, verwijderen, verplaatsen en openen van bestanden, en helpt bij het maken van een FileStream object.

  • FileInfo - biedt exemplaarmethoden voor het maken, kopiëren, verwijderen, verplaatsen en openen van bestanden, en helpt bij het maken van een FileStream object.

  • Directory - biedt statische methoden voor het maken, verplaatsen en inventariseren van mappen en submappen.

  • DirectoryInfo - biedt exemplaarmethoden voor het maken, verplaatsen en inventariseren van mappen en submappen.

  • Path - biedt methoden en eigenschappen voor het verwerken van adreslijstreeksen op een platformoverschrijdende manier.

U moet altijd robuuste afhandeling van uitzonderingen bieden bij het aanroepen van bestandssysteemmethoden. Zie I/O-fouten verwerken voor meer informatie.

Naast het gebruik van deze klassen kunnen Visual Basic gebruikers de methoden en eigenschappen van de Microsoft.VisualBasic.FileIO.FileSystem klasse gebruiken voor bestands-I/O.

Zie Procedure: Mappen kopiëren, Instructies: Een directoryvermelding maken en instructies: Mappen en bestanden opsommen.

Stromen

De abstracte basisklasse Stream ondersteunt het lezen en schrijven van bytes. Alle klassen die stromen vertegenwoordigen, nemen over van de Stream klasse. De Stream klasse en de afgeleide klassen bieden een algemene weergave van gegevensbronnen en opslagplaatsen en isoleren de programmeur van de specifieke details van het besturingssysteem en onderliggende apparaten.

Streams hebben betrekking op drie fundamentele bewerkingen:

  • Lezen: gegevens uit een stroom overbrengen naar een gegevensstructuur, zoals een matrix van bytes.

  • Schrijven: gegevens overdragen naar een stream vanuit een gegevensbron.

  • Op zoek naar - query's uitvoeren en wijzigen van de huidige positie binnen een stream.

Afhankelijk van de onderliggende gegevensbron of opslagplaats kan een stream slechts enkele van deze mogelijkheden ondersteunen. De klasse biedt bijvoorbeeld PipeStream geen ondersteuning voor zoeken. CanWriteDe CanReaden CanSeek eigenschappen van een stream geven de bewerkingen op die door de stream worden ondersteund.

Hier volgen enkele veelgebruikte streamklassen:

  • FileStream – voor het lezen en schrijven naar een bestand.

  • IsolatedStorageFileStream – voor het lezen en schrijven naar een bestand in geïsoleerde opslag.

  • MemoryStream – voor het lezen en schrijven naar geheugen als back-uparchief.

  • BufferedStream – voor het verbeteren van de prestaties van lees- en schrijfbewerkingen.

  • NetworkStream – voor het lezen en schrijven via netwerksockets.

  • PipeStream – voor het lezen en schrijven van anonieme en benoemde pijpen.

  • CryptoStream – voor het koppelen van gegevensstromen aan cryptografische transformaties.

Zie Asynchrone bestands-I/O voor een voorbeeld van het asynchroon werken met streams.

Lezers en schrijvers

De System.IO naamruimte biedt ook typen voor het lezen van gecodeerde tekens uit streams en het schrijven naar streams. Normaal gesproken zijn streams ontworpen voor byte-invoer en -uitvoer. De lezer- en schrijftypen verwerken de conversie van de gecodeerde tekens naar en van bytes, zodat de stream de bewerking kan voltooien. Elke lezer en schrijfklasse is gekoppeld aan een stream, die kan worden opgehaald via de eigenschap van BaseStream de klasse.

Hier volgen enkele veelgebruikte lezer- en schrijfklassen:

  • BinaryReaderBinaryWriter en: voor het lezen en schrijven van primitieve gegevenstypen als binaire waarden.

  • StreamReaderStreamWriter en – voor het lezen en schrijven van tekens met behulp van een coderingswaarde om de tekens te converteren naar en van bytes.

  • StringReaderStringWriter en : voor het lezen en schrijven van tekens naar en van tekenreeksen.

  • TextReaderTextWriter en – fungeren als abstracte basisklassen voor andere lezers en schrijvers die tekens en tekenreeksen lezen en schrijven, maar niet binaire gegevens.

Zie Procedure: Tekst lezen uit een bestand, Procedure: Tekst naar een bestand schrijven, Procedure: Tekens lezen uit een tekenreeks en Procedures: Tekens naar een tekenreeks schrijven.

Asynchrone I/O-bewerkingen

Het lezen of schrijven van een grote hoeveelheid gegevens kan resource-intensief zijn. U moet deze taken asynchroon uitvoeren als uw toepassing responsief moet blijven op de gebruiker. Met synchrone I/O-bewerkingen wordt de UI-thread geblokkeerd totdat de resource-intensieve bewerking is voltooid. Gebruik asynchrone I/O-bewerkingen bij het ontwikkelen van Windows 8.x Store-apps om te voorkomen dat de indruk ontstaat dat uw app niet meer werkt.

De asynchrone leden bevatten Async hun namen, zoals de CopyToAsyncFlushAsync, en ReadAsyncWriteAsync methoden. U gebruikt deze methoden met de async en await trefwoorden.

Zie Asynchrone bestands-I/O voor meer informatie.

Compressie

Compressie verwijst naar het proces voor het verkleinen van de grootte van een bestand voor opslag. Decomprimatie is het proces van het extraheren van de inhoud van een gecomprimeerd bestand, zodat deze zich in een bruikbare indeling bevinden. De System.IO.Compression naamruimte bevat typen voor het comprimeren en decomprimeren van bestanden en streams.

De volgende klassen worden vaak gebruikt bij het comprimeren en decomprimeren van bestanden en streams:

  • ZipArchive – voor het maken en ophalen van vermeldingen in het zip-archief.

  • ZipArchiveEntry – voor het vertegenwoordigen van een gecomprimeerd bestand.

  • ZipFile – voor het maken, extraheren en openen van een gecomprimeerd pakket.

  • ZipFileExtensions – voor het maken en extraheren van vermeldingen in een gecomprimeerd pakket.

  • DeflateStream – voor het comprimeren en decomprimeren van streams met behulp van het algoritme Deflate.

  • GZipStream – voor het comprimeren en decomprimeren van streams in gzip-gegevensindeling.

Zie Procedure: Bestanden comprimeren en extraheren.

Geïsoleerde opslag

Geïsoleerde opslag is een mechanisme voor gegevensopslag dat isolatie en veiligheid biedt door gestandaardiseerde manieren te definiëren om code te koppelen aan opgeslagen gegevens. De opslag biedt een virtueel bestandssysteem dat is geïsoleerd door gebruikers-, assembly- en (optioneel) domein. Geïsoleerde opslag is met name handig wanneer uw toepassing geen toegang heeft tot gebruikersbestanden. U kunt instellingen of bestanden voor uw toepassing opslaan op een manier die wordt beheerd door het beveiligingsbeleid van de computer.

Geïsoleerde opslag is niet beschikbaar voor Windows 8.x Store-apps. Gebruik in plaats daarvan toepassingsgegevensklassen in de Windows.Storage naamruimte. Zie Toepassingsgegevens voor meer informatie.

De volgende klassen worden vaak gebruikt bij het implementeren van geïsoleerde opslag:

Zie Geïsoleerde Storage.

I/O-bewerkingen in Windows Store-apps

.NET voor Windows 8.x Store-apps bevat veel van de typen voor het lezen van en schrijven naar streams. Deze set bevat echter niet alle .NET I/O-typen.

Enkele belangrijke verschillen bij het gebruik van I/O-bewerkingen in Windows 8.x Store-apps:

U kunt indien nodig converteren tussen .NET Framework streams en Windows Runtime streams. Zie Procedure: Converteren tussen .NET Framework Streams en Windows Runtime Streams of WindowsRuntimeStreamExtensionsvoor meer informatie.

Zie Quickstart: Bestanden lezen en schrijven voor meer informatie over I/O-bewerkingen in een Windows 8.x Store-app.

I/O en beveiliging

Wanneer u de klassen in de naamruimte gebruikt, moet u de beveiligingsvereisten van het System.IO besturingssysteem volgen, zoals toegangsbeheerlijsten (ACL's) om de toegang tot bestanden en mappen te beheren. Deze vereiste is in aanvulling op eventuele FileIOPermission vereisten. U kunt ACL's programmatisch beheren. Zie Instructies voor meer informatie: Access Control lijstitems toevoegen of verwijderen.

Standaardbeveiligingsbeleid voorkomt dat internet- of intranettoepassingen toegang krijgen tot bestanden op de computer van de gebruiker. Gebruik daarom niet de I/O-klassen waarvoor een pad naar een fysiek bestand is vereist bij het schrijven van code die via internet of intranet wordt gedownload. Gebruik in plaats daarvan geïsoleerde opslag voor .NET-toepassingen.

Er wordt alleen een beveiligingscontrole uitgevoerd wanneer de stream is samengesteld. Open daarom geen stream en geef deze vervolgens door aan minder vertrouwde code- of toepassingsdomeinen.

  • Algemene I/O-taken
    Bevat een lijst met I/O-taken die zijn gekoppeld aan bestanden, mappen en streams, en koppelingen naar relevante inhoud en voorbeelden voor elke taak.

  • Asynchrone bestands-I/O
    Beschrijft de prestatievoordelen en de basisbewerking van asynchrone I/O.

  • Geïsoleerde Storage
    Beschrijft een mechanisme voor gegevensopslag dat isolatie en veiligheid biedt door gestandaardiseerde manieren te definiëren om code te koppelen aan opgeslagen gegevens.

  • Pipes
    Beschrijft anonieme en benoemde pijpbewerkingen in .NET.

  • Geheugentoewijzingsbestanden
    Beschrijft geheugen toegewezen bestanden, die de inhoud van bestanden op schijf in virtueel geheugen bevatten. U kunt geheugen toegewezen bestanden gebruiken om zeer grote bestanden te bewerken en om gedeeld geheugen te maken voor communicatie tussen processen.