C# Window Store App 開發,自製簡易漫遊資料RoamingFolder檔案讀寫類別(Class)。

  • 1397
  • 0
  • C#
  • 2015-06-10

一般我們開發Windows Store App 時,時常會記錄使用者的設定或資料,對於需要再裝置間同步使用者資料的APP會採用RoamingFolder的空間放置要漫遊到其他裝置的資料,或供應用程式下一次的存取,但RoamingFolder地使用方式對於新手開發者來說有點不熟悉,那們常痛不如短痛,我們就來寫個檔案讀寫的RoamingFolder的Help類別吧!!

本篇文章將引導您自製簡易漫遊資料RoamingFolder檔案讀寫類別(Class)。

一般我們開發Windows Store App 時,時常會記錄使用者的設定或資料,對於需要再裝置間同步使用者資料的APP會採用RoamingFolder的空間放置要漫遊到其他裝置的資料,或供應用程式下一次的存取,但RoamingFolder地使用方式對於新手開發者來說有點不熟悉,那們常痛不如短痛,我們就來寫個檔案讀寫的RoamingFolder的Help類別吧!!

 

本篇文章將引導您自製簡易漫遊資料RoamingFolder檔案讀寫類別(Class)。

 

由於在Windows Store App 的SDK中並沒有提供File.isExist的方法,所以我們必須要另外做判斷檔案是否存在。

 

一般在讀取檔案時我們會採用這種方式

 

   1:  //取得roamingFolder 的空間資料夾
   2:  StorageFolder roamingFolder = ApplicationData.Current.RoamingFolder;
   3:  try
   4:  {
   5:      StorageFile sampleFile = await roamingFolder.GetFileAsync(FileName);
   6:      file_text = await FileIO.ReadTextAsync(sampleFile);//將獨到的文字存入
   7:      
   8:  }
   9:  catch(Exception ex)
  10:  {
  11:      Debug.WriteLine("GetFileAsync找不到檔案 : "+ex.Message.ToString());
  12:      //若發生例外則檔案不存在,或有其他因素無法讀取檔案
  13:  }

 

 

創建檔案時會使用以下方式

 

   1:  Debug.WriteLine("創建新檔案:" + FileName)
   2:  DateTimeFormatter formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
   3:  StorageFile sampleFile = await roamingFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
   4:  await FileIO.WriteTextAsync(sampleFile,"");

 

寫入檔案會採用以下方式

 

   1:   private static StorageFolder roamingFolder = ApplicationData.Current.RoamingFolder;
   2:          //讀取檔案不存在則Null 、無法解析 null
   3:          public static async Task<string> LoadFile(string FileName)
   4:          {
   5:              string file_text = "";
   6:   
   7:              try
   8:              {
   9:                  StorageFile sampleFile = await roamingFolder.GetFileAsync(FileName);
  10:                  file_text = await FileIO.ReadTextAsync(sampleFile);
  11:                  return file_text;
  12:              }
  13:              catch(Exception ex)
  14:              {
  15:                  Debug.WriteLine("GetFileAsync找不到檔案 : "+ex.Message.ToString());
  16:                  return null;
  17:              }
  18:          }
  19:          
  20:          //創建檔案
  21:          public static async Task CreateFile(string FileName)
  22:          {
  23:              Debug.WriteLine("創建新檔案:" + FileName);
  24:              DateTimeFormatter formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
  25:              StorageFile sampleFile = await roamingFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
  26:              await FileIO.WriteTextAsync(sampleFile,"");
  27:          }
  28:   
  29:          //寫入檔案
  30:          public static async Task WriteFile(string FileName, string content)
  31:          {
  32:              Debug.WriteLine("寫入檔案:" + FileName);
  33:              Debug.WriteLine("寫入檔案內容:" + content);
  34:              DateTimeFormatter formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
  35:              StorageFile sampleFile = await roamingFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
  36:              await FileIO.WriteTextAsync(sampleFile, content);
  37:          }
  38:      }

 

使用方法是

   1:  string File_Name="123.ext";
   2:  try{
   3:      string result=await LoadFile(File_Name);//讀取檔案
   4:  }catch{
   5:      //無法讀取檔案
   6:  }
   7:   
   8:  CreateFile(File_Name); //創建檔案
   9:   
  10:  WriteFile(File_Name,"寫入的文字");//寫入文字

 

所以說為了以後減少我們開發上的複雜性 將所有功能統整到同一個class就可以囉! 下次只要拿引用就可以將所有功能統整到同一個class就可以囉! 下次只要拿引用就可以了!!

 

如此一來我們就學會

 

 

自製簡易漫遊資料RoamingFolder檔案讀寫類別

 

Reference:Quickstart: Roaming app data

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 !  感謝。

SUKI

HOLIESTAR