Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
Gebruik de FileStream klasse om bestanden op een bestandssysteem te lezen, te schrijven, te openen en te sluiten en om andere bestandsgerelateerde besturingssysteemingangen te bewerken, waaronder pijpen, standaardinvoer en standaarduitvoer. U kunt de Readmethoden , Writeen CopyToFlush methoden gebruiken om synchrone bewerkingen uit te voeren, of de ReadAsyncWriteAsync, , CopyToAsyncen FlushAsync methoden om asynchrone bewerkingen uit te voeren. Gebruik de asynchrone methoden om resource-intensieve bestandsbewerkingen uit te voeren zonder de hoofdthread te blokkeren. Deze prestatieoverweging is met name belangrijk in een Windows 8.x Store-app of -desktop-app, waarbij een tijdrovende streambewerking de UI-thread kan blokkeren en uw app kan weergeven alsof deze niet werkt. FileStream buffert invoer en uitvoer voor betere prestaties.
Belangrijk
Met dit type wordt de IDisposable interface geïmplementeerd. Wanneer u klaar bent met het gebruik van het type, moet u het direct of indirect verwijderen. Als u het type rechtstreeks wilt verwijderen, roept u de Dispose methode aan in een try/catch blok. Als u deze indirect wilt verwijderen, gebruikt u een taalconstructie zoals using (in C#) of Using (in Visual Basic). Zie de sectie 'Using an Object that Implements IDisposable' (Een object gebruiken dat IDisposable implementeert) in het IDisposable interfaceonderwerp voor meer informatie.
De IsAsync eigenschap detecteert of de bestandsingang asynchroon is geopend. U geeft deze waarde op wanneer u een exemplaar van de FileStream klasse maakt met behulp van een constructor met een isAsync, useAsyncof options parameter. Wanneer de eigenschap is true, gebruikt de stroom overlappende I/O om asynchroon bestandsbewerkingen uit te voeren. De IsAsync eigenschap hoeft echter niet te zijn true om de ReadAsync, WriteAsyncof CopyToAsync methode aan te roepen. Wanneer de IsAsync eigenschap is false en u de asynchrone lees- en schrijfbewerkingen aanroept, wordt de UI-thread nog steeds niet geblokkeerd, maar wordt de werkelijke I/O-bewerking synchroon uitgevoerd.
De Seek methode ondersteunt willekeurige toegang tot bestanden. Seek staat toe dat de positie voor lezen/schrijven naar een willekeurige positie in het bestand wordt verplaatst. Dit wordt gedaan met parameters voor byte-offset-referentiepunten. De byte-offset is relatief ten opzichte van het zoekverwijzingspunt, dat het begin, de huidige positie of het einde van het onderliggende bestand kan zijn, zoals vertegenwoordigd door de drie leden van de SeekOrigin opsomming.
Opmerking
Schijfbestanden ondersteunen altijd willekeurige toegang. Op het moment van creatie wordt de waarde van de CanSeek-eigenschap ingesteld op true of false, afhankelijk van het onderliggende bestandstype. Als het onderliggende bestandstype FILE_TYPE_DISK is, zoals gedefinieerd in winbase.h, is de eigenschapswaarde CanSeektrue. Anders is de CanSeek eigenschapswaarde false.
Als een proces wordt beëindigd met een deel van een bestand dat is vergrendeld of een bestand sluit dat openstaande vergrendelingen heeft, is het gedrag niet gedefinieerd.
Zie de File, Directoryen klassen voor mapbewerkingen en Path andere bestandsbewerkingen. De File klasse is een hulpprogrammaklasse met voornamelijk statische methoden voor het maken van objecten op basis van FileStream bestandspaden. De MemoryStream klasse maakt een stroom op basis van een bytematrix en is vergelijkbaar met de FileStream klasse.
Zie Algemene I/O-taken voor een lijst met algemene bestands- en mapbewerkingen.
Detectie van wijzigingen in streampositie
Wanneer een FileStream object geen exclusieve controle heeft over het handvat, kan een andere thread gelijktijdig toegang krijgen tot de bestandsgreep en de positie van de bestandsaanwijzer van het besturingssysteem wijzigen die bij de bestandsgreep hoort. In dit geval kunnen de gecachede positie in het FileStream object en de gecachte gegevens in de buffer gecompromitteerd worden. Het FileStream object voert regelmatig controles uit op methoden die toegang hebben tot de buffer in de cache om ervoor te zorgen dat de ingangspositie van het besturingssysteem hetzelfde is als de in de cache geplaatste positie die door het FileStream object wordt gebruikt.
Als er een onverwachte wijziging in de ingangspositie wordt gedetecteerd in een aanroep naar de Read methode, wordt de inhoud van de buffer door .NET verwijderd en wordt de stroom opnieuw uit het bestand gelezen. Dit kan van invloed zijn op de prestaties, afhankelijk van de grootte van het bestand en eventuele andere processen die van invloed kunnen zijn op de positie van de bestandsstroom.
Als er een onverwachte wijziging in de handlepositie wordt gedetecteerd in een aanroep naar de Write methode, wordt de inhoud van de buffer verwijderd en wordt er een IOException uitzondering gegenereerd.
Een FileStream object heeft geen exclusief recht op de handle wanneer de SafeFileHandle eigenschap wordt benaderd om de handle te onthullen of het FileStream object de SafeFileHandle eigenschap krijgt in zijn constructor.