Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet beskriver vad du behöver veta för att komma igång med att läsa från och skriva till filer i en UWP-app (Universal Windows Platform). De viktigaste API:erna och typerna introduceras och länkar finns som hjälper dig att lära dig mer.
Det här är inte en handledning. Om du vill ha en självstudie kan du läsa Skapa, skriva och läsa en fil som förutom att visa hur du skapar, läser och skriver en fil visar hur du använder buffertar och strömmar. Du kan också vara intresserad av filåtkomstexemplet som visar hur du skapar, läser, skriver, kopierar och tar bort en fil, samt hur du hämtar filegenskaper och kommer ihåg en fil eller mapp så att din app enkelt kan komma åt den igen.
Vi tittar på kod för att skriva och läsa text från en fil och hur du kommer åt appens lokala, centrala och tillfälliga mappar.
Vad behöver du veta?
Här är de viktigaste typerna som du behöver känna till om du vill läsa eller skriva text från/till en fil:
- Windows.Storage.StorageFile representerar en fil. Den här klassen har egenskaper som ger information om filen och metoder för att skapa, öppna, kopiera, ta bort och byta namn på filer. Du kan vara van vid att hantera sökvägar för strängar. Det finns vissa Windows Runtime-API:er som använder en strängsökväg, men oftare använder du en StorageFile för att representera en fil eftersom vissa filer som du arbetar med i UWP kanske inte har någon sökväg eller har en svårhanterlig sökväg. Använd StorageFile.GetFileFromPathAsync() för att konvertera en strängväg till en StorageFile. 
- Klassen FileIO är ett enkelt sätt att läsa och skriva text. Den här klassen kan också läsa/skriva en byte-array eller innehållet i en buffert. Den här klassen liknar klassen PathIO . Den största skillnaden är att i stället för att ta en strängsökväg, som PathIO gör, tar den en StorageFile. 
- Windows.Storage.StorageFolder representerar en mapp (katalog). Den här klassen har metoder för att skapa filer, köra frågor mot innehållet i en mapp, skapa, byta namn på och ta bort mappar och egenskaper som ger information om en mapp. 
Vanliga sätt att hämta en StorageFolder är:
- Windows.Storage.Pickers.FolderPicker som gör att användaren kan navigera till den mapp som de vill använda.
- Windows.Storage.ApplicationData.Current som tillhandahåller StorageFolder specifik för en av de mappar som är lokala för appen, till exempel den lokala, roaming och tillfälliga mapparna.
- Windows.Storage.KnownFolders som tillhandahåller StorageFolder- för kända bibliotek som musik- eller bildbibliotek.
Skriva text till en fil
I den här introduktionen fokuserar vi på ett enkelt scenario: läsa och skriva text. Vi börjar med att titta på kod som använder Klassen FileIO för att skriva text till en fil.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("test.txt",
        Windows.Storage.CreationCollisionOption.OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync(file, "Example of writing a string\r\n");
// Append a list of strings, one per line, to the file
var listOfStrings = new List<string> { "line1", "line2", "line3" };
await Windows.Storage.FileIO.AppendLinesAsync(file, listOfStrings); // each entry in the list is written to the file on its own line.
Vi identifierar först var filen ska finnas. 
              Windows.Storage.ApplicationData.Current.LocalFolder ger åtkomst till den lokala datamappen som skapas för din app när den installeras. Mer information om de mappar som appen kan komma åt finns i Åtkomst till filsystemet .
Sedan använder vi StorageFolder för att skapa filen (eller öppna den om den redan finns).
              Klassen FileIO är ett praktiskt sätt att skriva text till filen. 
              FileIO.WriteTextAsync() ersätter hela innehållet i filen med den angivna texten. 
              FileIO.AppendLinesAsync() lägger till en samling strängar i filen – skriver en sträng per rad.
Läsa text från en fil
Precis som när du skriver en fil börjar läsningen av en fil med att ange var filen finns. Vi använder samma plats som i exemplet ovan. Sedan använder vi klassen FileIO för att läsa dess innehåll.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("test.txt");
string text = await Windows.Storage.FileIO.ReadTextAsync(file);
Du kan också läsa varje rad i filen i enskilda strängar i en samling med IList<string> contents = await Windows.Storage.FileIO.ReadLinesAsync(sampleFile);
Få åtkomst till filsystemet
På UWP-plattformen begränsas mappåtkomsten för att säkerställa integriteten och sekretessen för användarens data.
Appmappar
När en UWP-app installeras skapas flera mappar under c:\users<user name>\AppData\Local\Packages<app-paketidentifierare>\ för att lagra bland annat appens lokala, roamande och tillfälliga filer. Appen behöver inte deklarera några funktioner för att komma åt dessa mappar och dessa mappar är inte tillgängliga för andra appar. Dessa mappar tas också bort när appen avinstalleras.
Det här är några av de appmappar som du ofta använder:
- LocalState: För data som är lokala för den aktuella enheten. När enheten säkerhetskopieras sparas data i den här katalogen i en säkerhetskopia i OneDrive. Om användaren återställer eller ersätter enheten återställs data. Få åtkomst till den här mappen med - Windows.Storage.ApplicationData.Current.LocalFolder.Spara lokala data som du inte vill säkerhetskopiera till OneDrive i LocalCacheFolder, som du kan komma åt med- Windows.Storage.ApplicationData.Current.LocalCacheFolder.
- RoamingState: Data som lagras här, synkroniseras inte längre (från och med Windows 11), men mappen är fortfarande tillgänglig. Få åtkomst till roaming-mappen med - Windows.Storage.ApplicationData.Current.RoamingFolder. Den rekommenderade ersättningen är Azure App Service. Azure App Service har brett stöd, väldokumenterat, tillförlitligt och har stöd för scenarier mellan plattformar och ekosystem, till exempel iOS, Android och webben.
- TempState: För data som kan tas bort när appen inte körs. Få åtkomst till den här mappen med - Windows.Storage.ApplicationData.Current.TemporaryFolder.
Få åtkomst till resten av filsystemet
En UWP-app måste deklarera sin avsikt att komma åt ett specifikt användarbibliotek genom att lägga till motsvarande funktion i manifestet. Användaren tillfrågas sedan när appen har installerats för att verifiera att de tillåter åtkomst till det angivna biblioteket. Om inte är appen inte installerad. Det finns funktioner för att komma åt bilder, videor och musikbibliotek. En fullständig lista finns i Appkapacitetsdeklaration . För att få en StorageFolder- för dessa bibliotek kan klassen Windows.Storage.KnownFolders användas.
Dokumentbibliotek
Även om det finns en möjlighet att komma åt användarens dokumentbibliotek är den funktionen begränsad, vilket innebär att en app som deklarerar att den avvisas av Microsoft Store om du inte följer en process för att få särskilt godkännande. Den är inte avsedd för allmän användning. Använd i stället fil- eller mappväljarna (se Öppna filer och mappar med en väljare och Spara en fil med en väljare) som gör att användaren kan navigera till mappen eller filen. När användaren navigerar till en mapp eller fil har de implicit gett appen behörighet att komma åt den och systemet tillåter åtkomst.
Allmän åtkomst
Du kan också deklarera den begränsade kapaciteten broadFileSystem i manifestet, vilket också kräver godkännande av Microsoft Store. Sedan kan appen komma åt alla filer som användaren har åtkomst till utan att en fil- eller mappväljare behöver ingripa.
En omfattande lista över de platser som appar kan komma åt finns i Behörigheter för filåtkomst.
Användbara API:er och dokument
Här är en snabb sammanfattning av API:er och annan användbar dokumentation som hjälper dig att komma igång med filer och mappar.
Användbara API:er
| API (gränssnitt för programmering av applikationer) | Beskrivning | 
|---|---|
| Windows.Storage.StorageFile | Innehåller information om filen och metoder för att skapa, öppna, kopiera, ta bort och byta namn på filer. | 
| Windows.Storage.StorageFolder | Innehåller information om mappen, metoder för att skapa filer och metoder för att skapa, byta namn på och ta bort mappar. | 
| FileIO | Ger ett enkelt sätt att läsa och skriva text. Den här klassen kan också läsa/skriva en matris med byte eller innehållet i en buffert. | 
| PathIO | Ger ett enkelt sätt att läsa/skriva text från/till en fil med en strängsökväg för filen. Den här klassen kan också läsa/skriva en matris med byte eller innehållet i en buffert. | 
| DataReader och DataWriter | Läs- och skrivbuffertar, byte, heltal, GUID,TimeSpans med mera, från/till en ström. | 
| Windows.Storage.ApplicationData.Current | Ger åtkomst till mapparna som skapats för appen, till exempel den lokala mappen, den centrala mappen och mappen för temporära filer. | 
| Windows.Storage.Pickers.FolderPicker | Låter användaren välja en mapp och returnerar en StorageFolder för den. Så här får du åtkomst till platser som appen inte kan komma åt som standard. | 
| Windows.Storage.Pickers.FileOpenPicker | Låter användaren välja en fil att öppna och returnerar en StorageFile för den. Så här får du åtkomst till en fil som appen inte kan komma åt som standard. | 
| Windows.Storage.Pickers.FileSavePicker | Låter användaren välja filnamn, filändelse och lagringsplats för en fil. Returnerar en StorageFile. Så här sparar du en fil på en plats som appen inte kan komma åt som standard. | 
| Windows.Storage.Streams-namnområde | Omfattar läsning och skrivning av dataströmmar. Titta särskilt på klasser för DataReader och DataWriter som läser och skriver buffertar, byte, heltal, GUID,TimeSpans med mera. | 
Användbara dokument
| Ämne | Beskrivning | 
|---|---|
| Windows.Storage-namespace | API-referensdokument. | 
| Filer, mappar och bibliotek | Konceptdokument. | 
| Skapa, skriva och läsa en fil | Omfattar att skapa, läsa och skriva text, binära data och strömmar. | 
| Komma igång med att lagra appdata lokalt | Förutom att ta upp bästa praxis för att spara lokala data, behandlas syftet med mapparna LocalSettings och LocalCache. | 
| Spara och hämta inställningar och andra appdata | Ger en översikt över de olika appdatalager som lokala mappar, roaming och tillfälliga mappar. | 
| Behörigheter för filåtkomst | Information om vilka filsystemplatser som appen kan komma åt. | 
| Öppna filer och mappar med en filväljare | Visar hur du kommer åt filer och mappar genom att låta användaren bestämma via ett användargränssnitt för väljare. | 
| Windows.Storage.Streams | Typer som används för att läsa och skriva strömmar. | 
| Filer och mappar i biblioteken Musik, Bilder och Videor | Beskriver hur du tar bort mappar från bibliotek, hämtar listan över mappar i ett bibliotek och identifierar lagrade foton, musik och videor. | 
Användbara kodexempel
| Kodexempel | Beskrivning | 
|---|---|
| Exempel på programdata | Visar hur du lagrar och hämtar data som är specifika för varje användare med hjälp av API:erna för programdata. | 
| Exempel på filåtkomst | Visar hur du skapar, läser, skriver, kopierar och tar bort en fil. | 
| Exempel på filväljare | Visar hur du kommer åt filer och mappar genom att låta användaren välja dem med användargränssnittet och hur du sparar en fil så att användaren kan ange namn, filtyp och plats för en fil att spara. | 
| JSON-exempel | Visar hur du kodar och avkodar JSON-objekt (JavaScript Object Notation), matriser, strängar, tal och booleska objekt med namnområdet Windows.Data.Json. | 
| Ytterligare kodexempel | Välj Filer, mappar och bibliotek i listrutan kategori. |