Windows Phone 8 新增功能:Windows.Storage新的檔案操作型別

l_serein發表於2013-03-25

為了與Windows 8 的統一, Windows phone 8提供了新的檔案操作型別,新的檔案操作型別都包含在Windows.Storage名稱空間中,其中包括StorageFolder,StorageFile,FileIO等類庫。Windwos.Storage元件中主要包含了IStorageFile和 IStorageFolder, 可以看出,一個是對檔案的操作,一個是對資料夾的。

在正式版的SDK中,windows phone 7 通過

[csharp] view plaincopy
  1. IsolatedStorageFile.GetUserStoreForApplication(); 檢視私有變數 m_AppFilesPathAccess 可知  

和 Windows phone 8 通過

[csharp] view plaincopy
  1. await ApplicationData.Current.LocalFolder  

獲取 的檔案目錄結構定義是一致的。都是

C:\Data\Users\DefApps\AppData\{ProductID}\Local

差異的是wp8對檔案操作基本都是基於非同步架構,而wp7主要是使用的是同步方法。


使用IStorageFile建立一個檔案

[csharp] view plaincopy
  1. public void IStorageFileCreateFile(string fileName)  
  2. {  
  3.     IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;  
  4.   
  5.     IAsyncOperation<StorageFile> iaStorageFile = applicationFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);  
  6.     iaStorageFile.Completed = (IAsyncOperation<StorageFile> asyncInfo, AsyncStatus asyncStatus) =>  
  7.     {  
  8.         if (asyncStatus == AsyncStatus.Completed)  
  9.         {  
  10.   
  11.   
  12.         }  
  13.     };  
  14.   
  15.   
  16. }  


使用IStorageFile讀取一個檔案

[csharp] view plaincopy
  1. public async Task<string> IStorageFileReadFile(string fileName)  
  2. {  
  3.     string text;  
  4.     IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;  
  5.   
  6.     IStorageFile storageFile = await applicationFolder.GetFileAsync(fileName);  
  7.   
  8.     IRandomAccessStream accessStream = await storageFile.OpenReadAsync();  
  9.   
  10.     using (Stream stream = accessStream.AsStreamForRead((int)accessStream.Size))  
  11.     {  
  12.         byte[] content = new byte[stream.Length];  
  13.         await stream.ReadAsync(content, 0, (int)stream.Length);  
  14.   
  15.         text = Encoding.UTF8.GetString(content, 0, content.Length);  
  16.     }  
  17.     return text;  
  18. }  

相關文章