Windows10 Geliştirme - Dosya Yönetimi

Herhangi bir uygulamada, en önemli şeylerden biri verilerdir. Eğer sen.net geliştirici, yalıtılmış depolama hakkında bilgi sahibi olabilirsiniz ve aynı kavram Evrensel Windows Platformu (UWP) uygulamaları aracılığıyla da devam eder.

Dosya Konumları

Bunlar, uygulamanızın verilere erişebileceği alanlardır. Uygulama, belirli bir uygulamaya özel olan ve diğerlerine erişilemeyen bir alan içerir, ancak verilerinizi bir dosya içinde saklayabileceğiniz ve kaydedebileceğiniz birçok başka alan vardır.

Aşağıda, her klasörün kısa açıklamaları verilmiştir.

S.No. Klasör ve Açıklama
1

App package folder

Paket yöneticisi, uygulamanın tüm ilgili dosyalarını Uygulama paketi klasörüne yükler ve uygulama yalnızca bu klasördeki verileri okuyabilir.

2

Local folder

Uygulamalar yerel verileri yerel bir klasörde depolar. Depolama cihazında sınıra kadar veri depolayabilir.

3

Roaming folder

Uygulamayla ilgili ayarlar ve özellikler dolaşım klasöründe saklanır. Diğer cihazlar da bu klasördeki verilere erişebilir. Uygulama başına 100 KB'a kadar sınırlı boyuta sahiptir.

4

Temp Folder

Geçici depolamanın kullanılması ve uygulamanız yeniden çalıştığında hala kullanılabilir olacağına dair bir garanti yoktur.

5

Publisher Share

Aynı yayıncıya ait tüm uygulamalar için paylaşılan depolama. Uygulama manifestinde beyan edildi.

6

Credential Locker

Parola kimlik bilgisi nesnelerinin güvenli depolanması için kullanılır.

7

OneDrive

OneDrive, Microsoft hesabınızla birlikte gelen ücretsiz çevrimiçi depolamadır.

8

Cloud

Verileri bulutta depolayın.

9

Known folders

Bu klasörler Resimlerim, Videolar ve Müzik gibi zaten bilinen klasörlerdir.

10

Removable storage

USB depolama cihazı veya harici sabit sürücü vb.

Dosya İşleme API'leri

Windows 8'de, dosya işleme için yeni API'ler tanıtıldı. Bu API'ler şurada bulunur:Windows.Storage ve Windows.Storage.Streamsad alanları. Bunun yerine bu API'leri kullanabilirsiniz.System.IO.IsolatedStoragead alanı. Bu API'leri kullanarak, Windows Phone uygulamanızı Windows Mağazası'na taşımak daha kolay olacaktır ve uygulamalarınızı Windows'un gelecekteki sürümlerine kolayca yükseltebilirsiniz.

Yerel, dolaşım veya geçici klasörlere erişmek için bu API'leri çağırmanız gerekir -

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

Yerel bir klasörde yeni bir dosya oluşturmak için aşağıdaki kodu kullanın -

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

İşte yeni oluşturulan dosyayı açmak ve bu dosyaya bazı içerikler yazmak için kod.

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

Aynı dosyayı, aşağıda verilen kodda gösterildiği gibi yerel klasörden tekrar açabilirsiniz.

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); 
   } 
	
}

Verilerin okunmasının ve yazılmasının nasıl çalıştığını anlamak için basit bir örneğe bakalım. Aşağıda, farklı kontrollerin eklendiği XAML kodu verilmiştir.

<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>

Aşağıda, farklı olaylar için C # uygulaması ve ayrıca FileHelper metin dosyasına veri okumak ve yazmak için sınıf.

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; 
      } 
   } 
}

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki pencereyi göreceksiniz.

Şimdi, metin kutusuna bir şey yazıp “Write Data to File”buton. Program, verileri yerel bir klasördeki metin dosyasına yazacaktır. Eğer tıklarsan“Read Data from File” düğmesine tıklandığında, program verileri yerel klasörde bulunan aynı metin dosyasından okuyacak ve metin bloğunda gösterecektir.