Windows10-Entwicklung - Dateiverwaltung

In jeder Anwendung sind die Daten eines der wichtigsten Dinge. Wenn du bist.net Entwickler kennen Sie möglicherweise den isolierten Speicher, und dasselbe Konzept wird in den UWP-Anwendungen (Universal Windows Platform) angewendet.

Dateispeicherorte

In diesen Bereichen kann Ihre Anwendung auf die Daten zugreifen. Die Anwendung enthält einen Bereich, der für diese bestimmte Anwendung privat ist und für die anderen nicht zugänglich ist. Es gibt jedoch viele andere Bereiche, in denen Sie Ihre Daten in einer Datei speichern und speichern können.

Nachstehend finden Sie die kurzen Beschreibungen der einzelnen Ordner.

S.No. Ordner & Beschreibung
1

App package folder

Der Paketmanager installiert alle zugehörigen Dateien der App im App-Paketordner, und die App kann nur Daten aus diesem Ordner lesen.

2

Local folder

Anwendungen speichern lokale Daten in einem lokalen Ordner. Es kann Daten bis zum Limit auf dem Speichergerät speichern.

3

Roaming folder

Einstellungen und Eigenschaften in Bezug auf die Anwendung werden im Roaming-Ordner gespeichert. Andere Geräte können ebenfalls auf Daten aus diesem Ordner zugreifen. Die Größe ist auf bis zu 100 KB pro Anwendung begrenzt.

4

Temp Folder

Verwendung von temporärem Speicher und es gibt keine Garantie dafür, dass dieser weiterhin verfügbar ist, wenn Ihre Anwendung erneut ausgeführt wird.

5

Publisher Share

Gemeinsamer Speicher für alle Apps desselben Herausgebers. Es wird im App-Manifest deklariert.

6

Credential Locker

Wird zur sicheren Speicherung von Objekten mit Kennwortanmeldeinformationen verwendet.

7

OneDrive

OneDrive ist ein kostenloser Online-Speicher, der mit Ihrem Microsoft-Konto geliefert wird.

8

Cloud

Speichern Sie Daten in der Cloud.

9

Known folders

Diese Ordner sind bereits Ordner wie Meine Bilder, Videos und Musik bekannt.

10

Removable storage

USB-Speichergerät oder externe Festplatte usw.

APIs für die Dateiverwaltung

In Windows 8 wurden neue APIs für die Dateiverwaltung eingeführt. Diese APIs befinden sich in derWindows.Storage und Windows.Storage.StreamsNamespaces. Sie können diese APIs anstelle von verwendenSystem.IO.IsolatedStorageNamespace. Durch die Verwendung dieser APIs ist es einfacher, Ihre Windows Phone-App in den Windows Store zu portieren, und Sie können Ihre Anwendungen problemlos auf zukünftige Windows-Versionen aktualisieren.

Um auf lokale, Roaming- oder temporäre Ordner zuzugreifen, müssen Sie diese APIs aufrufen -

StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
StorageFolder roamingFolder = ApplicationData.Current.RoamingFolder; 
StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;

Verwenden Sie den folgenden Code, um eine neue Datei in einem lokalen Ordner zu erstellen:

StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
StorageFile textFile = await localFolder.CreateFileAsync(filename, 
   CreationCollisionOption.ReplaceExisting);

Hier ist der Code zum Öffnen der neu erstellten Datei und zum Schreiben von Inhalten in diese Datei.

using (IRandomAccessStream textStream = await textFile.OpenAsync(FileAccessMode.ReadWrite)) { 
	
   using (DataWriter textWriter = new DataWriter(textStream)){
      textWriter.WriteString(contents); 
      await textWriter.StoreAsync(); 
   } 
		
}

Sie können dieselbe Datei erneut aus dem lokalen Ordner öffnen, wie im folgenden Code gezeigt.

using (IRandomAccessStream textStream = await textFile.OpenReadAsync()) { 

   using (DataReader textReader = new DataReader(textStream)){
      uint textLength = (uint)textStream.Size; 
      await textReader.LoadAsync(textLength); 
      contents = textReader.ReadString(textLength); 
   } 
	
}

Schauen wir uns ein einfaches Beispiel an, um zu verstehen, wie das Lesen und Schreiben der Daten funktioniert. Unten ist der XAML-Code angegeben, in dem verschiedene Steuerelemente hinzugefügt werden.

<Page
   x:Class = "UWPFileHandling.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:local = "using:UWPFileHandling" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d">  
	
   <Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
	
      <Button x:Name = "readFile" Content = "Read Data From File"  
         HorizontalAlignment = "Left" Margin = "62,518,0,0"  
         VerticalAlignment = "Top" Height = "37" Width = "174"  
         Click = "readFile_Click"/> 
			
      <TextBox x:FieldModifier = "public" x:Name = "textBox"  
         HorizontalAlignment = "Left" Margin = "58,145,0,0" TextWrapping = "Wrap"  
         VerticalAlignment = "Top" Height = "276" Width = "245"/>.
			
      <Button x:Name = "writeFile" Content = "Write Data to File"
         HorizontalAlignment = "Left" Margin = "64,459,0,0"  
         VerticalAlignment = "Top" Click = "writeFile_Click"/>
			
      <TextBlock x:Name = "textBlock" HorizontalAlignment = "Left"  
         Margin = "386,149,0,0" TextWrapping = "Wrap"  
         VerticalAlignment = "Top" Height = "266" Width = "250"  
         Foreground = "#FF6231CD"/> 
			
   </Grid> 
	 
</Page>

Im Folgenden ist die C # -Implementierung für verschiedene Ereignisse sowie die Implementierung des angegeben FileHelper Klasse zum Lesen und Schreiben von Daten in die Textdatei.

using System; 
using System.IO; 
using System.Threading.Tasks; 

using Windows.Storage; 
using Windows.Storage.Streams; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls;
  
// The Blank Page item template is documented at 
   http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 
 
namespace UWPFileHandling {
 
   /// <summary> 
      /// An empty page that can be used on its own or navigated to within a Frame. 
   /// </summary> 
	
   public partial class MainPage : Page {
      const string TEXT_FILE_NAME = "SampleTextFile.txt"; 
		
      public MainPage(){ 
         this.InitializeComponent(); 
      }  
		
      private async void readFile_Click(object sender, RoutedEventArgs e) {
         string str = await FileHelper.ReadTextFile(TEXT_FILE_NAME); 
         textBlock.Text = str; 
      }
		
      private async void writeFile_Click(object sender, RoutedEventArgs e) {
         string textFilePath = await FileHelper.WriteTextFile(TEXT_FILE_NAME, textBox.Text); 
      }
		
   } 
	
   public static class FileHelper {
     
      // Write a text file to the app's local folder. 
	  
      public static async Task<string> 
         WriteTextFile(string filename, string contents) {
         
         StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
         StorageFile textFile = await localFolder.CreateFileAsync(filename,
            CreationCollisionOption.ReplaceExisting);  
				
         using (IRandomAccessStream textStream = await 
            textFile.OpenAsync(FileAccessMode.ReadWrite)){ 
             
               using (DataWriter textWriter = new DataWriter(textStream)){ 
                  textWriter.WriteString(contents); 
                  await textWriter.StoreAsync(); 
               } 
         }  
			
         return textFile.Path; 
      }
		
      // Read the contents of a text file from the app's local folder.
	  
      public static async Task<string> ReadTextFile(string filename) {
         string contents;  
         StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
         StorageFile textFile = await localFolder.GetFileAsync(filename);
			
         using (IRandomAccessStream textStream = await textFile.OpenReadAsync()){
             
            using (DataReader textReader = new DataReader(textStream)){
               uint textLength = (uint)textStream.Size; 
               await textReader.LoadAsync(textLength); 
               contents = textReader.ReadString(textLength); 
            }
				
         }
			
         return contents; 
      } 
   } 
}

Wenn der obige Code kompiliert und ausgeführt wird, wird das folgende Fenster angezeigt.

Jetzt schreiben Sie etwas in das Textfeld und klicken auf “Write Data to File”Taste. Das Programm schreibt die Daten in die Textdatei in einem lokalen Ordner. Wenn Sie auf klicken“Read Data from File” Mit dieser Schaltfläche liest das Programm die Daten aus derselben Textdatei, die sich im lokalen Ordner befindet, und zeigt sie im Textblock an.