Dela via


Fil- och dataström-I/O

Fil- och ström-I/O (indata/utdata) avser överföring av data till eller från ett lagringsmedium. I .NET System.IO innehåller namnrymderna typer som möjliggör läsning och skrivning, både synkront och asynkront, på dataströmmar och filer. Dessa namnområden innehåller också typer som utför komprimering och dekomprimering på filer och typer som möjliggör kommunikation via rör och serieportar.

En fil är en ordnad och namngiven samling byte som har beständig lagring. När du arbetar med filer arbetar du med katalogsökvägar, disklagring och fil- och katalognamn. En ström är däremot en sekvens med byte som du kan använda för att läsa från och skriva till ett lagringslager som kan vara ett av flera lagringsmedier (till exempel diskar eller minne). På samma sätt som det finns flera andra lagringsplatser än diskar finns det flera typer av andra strömmar än filströmmar, till exempel nätverk, minne och rörströmmar.

Filer och kataloger

Du kan använda typerna System.IO i namnområdet för att interagera med filer och kataloger. Du kan till exempel hämta och ange egenskaper för filer och kataloger och hämta samlingar av filer och kataloger baserat på sökvillkor.

Information om namngivningskonventioner för sökvägar och sätt att uttrycka en filsökväg för Windows-system, inklusive med DOS-enhetssyntaxen som stöds i .NET Core 1.1 och senare och .NET Framework 4.6.2 och senare, finns i Filsökvägsformat i Windows-system.

Här är några vanliga fil- och katalogklasser:

  • File – tillhandahåller statiska metoder för att skapa, kopiera, ta bort, flytta och öppna filer och hjälpa till att skapa ett FileStream objekt.

  • FileInfo – innehåller instansmetoder för att skapa, kopiera, ta bort, flytta och öppna filer och hjälpa till att skapa ett FileStream objekt.

  • Directory – tillhandahåller statiska metoder för att skapa, flytta och räkna upp genom kataloger och underkataloger.

  • DirectoryInfo – tillhandahåller instansmetoder för att skapa, flytta och gå igenom kataloger och underkataloger.

  • Path – tillhandahåller metoder och egenskaper för bearbetning av katalogsträngar på ett plattformsoberoende sätt.

Du bör alltid tillhandahålla robust undantagshantering när du anropar filsystemmetoder. Mer information finns i Hantera I/O-fel.

Förutom att använda dessa klasser kan Visual Basic-användare använda de metoder och egenskaper som tillhandahålls av Microsoft.VisualBasic.FileIO.FileSystem klassen för fil-I/O.

Se Så här gör du: Kopiera kataloger, Så här skapar du en kataloglista och Så här räknar du upp kataloger och filer.

Strömmar

Den abstrakta basklassen Stream stöder läsning och skrivning av byte. Alla klasser som representerar strömmar ärver från Stream klassen. Klassen Stream och dess härledda klasser ger en gemensam vy över datakällor och lagringsplatser och isolerar programmeraren från den specifika informationen om operativsystemet och underliggande enheter.

Strömmar omfattar tre grundläggande åtgärder:

  • Läsning – överföra data från en dataström till en datastruktur, till exempel en matris med byte.

  • Skriva – överföra data till en dataström från en datakälla.

  • Undersöka - att modifiera den aktuella positionen inom en ström.

Beroende på den underliggande datakällan eller lagringsplatsen kan en dataström endast ha stöd för vissa av dessa funktioner. Klassen PipeStream stöder till exempel inte sökning. Egenskaperna CanRead, CanWriteoch för CanSeek en ström anger de åtgärder som strömmen stöder.

Här är några vanliga strömklasser:

  • FileStream – för att läsa och skriva till en fil.

  • IsolatedStorageFileStream – för att läsa och skriva till en fil i isolerad lagring.

  • MemoryStream – för att läsa och skriva till minnet som underliggande lagringsenhet.

  • BufferedStream – för att förbättra prestanda för läs- och skrivåtgärder.

  • NetworkStream – för läsning och skrivning via nätverksuttag.

  • PipeStream – för att läsa och skriva över anonyma och namngivna rör.

  • CryptoStream – för att länka dataströmmar till kryptografiska transformeringar.

Ett exempel på hur du arbetar med strömmar asynkront finns i Asynkron fil-I/O.

Läsare och författare

Namnområdet System.IO innehåller också typer för att läsa kodade tecken från strömmar och skriva dem till strömmar. Normalt är strömmar utformade för byteindata och utdata. Läs- och skrivtyperna hanterar konverteringen av kodade tecken till och från byte så att strömmen kan slutföra åtgärden. Varje läsar- och skrivarklass är associerad med en ström som kan hämtas via klassens BaseStream egenskap.

Här följer några vanliga läsar- och skrivarklasser:

  • BinaryReader och BinaryWriter – för att läsa och skriva primitiva datatyper som binära värden.

  • StreamReader och StreamWriter – för att läsa och skriva tecken med hjälp av ett kodningsvärde för att konvertera tecknen till och från byte.

  • StringReader och StringWriter – för att läsa och skriva tecken till och från strängar.

  • TextReader och TextWriter – fungerar som abstrakta basklasser för andra läsare och författare som läser och skriver tecken och strängar, men inte binära data.

Se Anvisningar: Läsa text från en fil, Så här skriver du text till en fil, Så här: Läs tecken från en sträng och Så här skriver du tecken till en sträng.

Asynkrona I/O-åtgärder

Det kan vara resurskrävande att läsa eller skriva en stor mängd data. Du bör utföra dessa uppgifter asynkront om ditt program måste vara responsivt för användaren. Med synkrona I/O-åtgärder blockeras användargränssnittstråden tills den resursintensiva åtgärden har slutförts. Använd asynkrona I/O-åtgärder när du utvecklar Windows 8.x Store-appar för att förhindra att det visas att din app har slutat fungera.

De asynkrona medlemmarna innehåller Async i sina namn, till exempel CopyToAsyncmetoderna , FlushAsync, ReadAsyncoch WriteAsync . Du använder dessa metoder med nyckelorden async och await .

Mer information finns i Asynkron fil-I/O.

Komprimering

Komprimering syftar på processen att minska storleken på en fil för lagring. Dekomprimering är processen att extrahera innehållet i en komprimerad fil så att de är i ett användbart format. Namnområdet System.IO.Compression innehåller typer för att komprimera och dekomprimera filer och strömmar.

Följande klasser används ofta vid komprimering och dekomprimering av filer och strömmar:

  • ZipArchive – för att skapa och hämta poster i zip-arkivet.

  • ZipArchiveEntry – för att representera en komprimerad fil.

  • ZipFile – för att skapa, extrahera och öppna ett komprimerat paket.

  • ZipFileExtensions – för att skapa och hantera element i ett komprimerat paket.

  • DeflateStream – för att komprimera och dekomprimera strömmar med deflate-algoritmen.

  • GZipStream – för att komprimera och dekomprimera strömmar i gzip-dataformat.

Se Så här: Komprimera och extrahera filer.

Isolerad lagring

Isolerad lagring är en mekanism för datalagring som ger isolering och säkerhet genom att definiera standardiserade sätt att associera kod med sparade data. Lagringen tillhandahåller ett virtuellt filsystem som är isolerat av en användare, sammansättning och (valfritt) domän. Isolerad lagring är särskilt användbart när programmet inte har behörighet att komma åt användarfiler. Du kan spara inställningar eller filer för ditt program på ett sätt som styrs av datorns säkerhetsprincip.

Isolerad lagring är inte tillgänglig för Windows 8.x Store-appar. använd i stället programdataklasser i Windows.Storage namnområdet. Mer information finns i Programdata.

Följande klasser används ofta vid implementering av isolerad lagring:

Se Isolerad lagring.

I/O-åtgärder i Windows Store-appar

.NET för Windows 8.x Store-appar innehåller många av typerna för läsning från och skrivning till strömmar. Den här uppsättningen innehåller dock inte alla .NET I/O-typer.

Några viktiga skillnader att notera när du använder I/O-åtgärder i Windows 8.x Store-appar:

Du kan konvertera mellan .NET Framework-strömmar och Windows Runtime-strömmar om det behövs. För mer information, se Så här: Konvertera mellan .NET Framework Streams och Windows Runtime Streams eller WindowsRuntimeStreamExtensions.

Mer information om I/O-åtgärder i en Windows 8.x Store-app finns i Snabbstart: Läsa och skriva filer.

I/O och säkerhet

När du använder klasserna i System.IO namnområdet måste du följa operativsystemets säkerhetskrav, till exempel åtkomstkontrollistor (ACL: er) för att styra åtkomsten till filer och kataloger. Det här kravet är utöver alla FileIOPermission krav. Du kan hantera ACL:er programmatiskt. Mer information finns i Så här lägger du till eller tar bort poster för åtkomstkontrollistan.

Standardsäkerhetsprinciper hindrar Internet- eller intranätprogram från att komma åt filer på användarens dator. Använd därför inte de I/O-klasser som kräver en sökväg till en fysisk fil när du skriver kod som laddas ned via Internet eller intranätet. Använd i stället isolerad lagring för .NET-program.

En säkerhetskontroll utförs endast när strömmen skapas. Öppna därför inte en dataström och skicka den sedan till mindre betrodda kod- eller programdomäner.

  • Vanliga I/O-uppgifter
    Innehåller en lista över I/O-uppgifter som är associerade med filer, kataloger och strömmar samt länkar till relevant innehåll och exempel för varje uppgift.

  • Asynkron fil-In/Ut
    Beskriver prestandafördelar och grundläggande drift av asynkron I/O.

  • Isolerad lagring
    Beskriver en datalagringsmekanism som ger isolering och säkerhet genom att definiera standardiserade sätt att associera kod med sparade data.

  • Rör
    Beskriver anonyma och namngivna pipe-åtgärder i .NET.

  • Memory-Mapped Filer
    Beskriver minnesmappade filer som innehåller innehållet i filer på disken i virtuellt minne. Du kan använda minnesmappade filer för att redigera mycket stora filer och för att skapa delat minne för kommunikation mellan processer.