標籤:
Windows phone7中檔案的儲存模式是獨立的,即隔離儲存區 (Isolated Storage)空間(IsolatedStorage)。對檔案夾與檔案操作,需要藉助IsolatedStorageFile類。 IsolatedStorageFile提供了對隔離儲存區 (Isolated Storage)的空間擷取,檔案夾的刪除、移動,檔案的建立、刪除等IO操作。 在Windows phone7中對檔案的操作,都需要引入命名空間System.IO.IsolatedStorage和System.IO。
在System.IO.IsolatedStorage 命名空間下有以下幾種類: (詳細瞭解:https://msdn.microsoft.com/zh-cn/library/system.io.isolatedstorage%28VS.95%29.aspx)
1.IsolatedStorageFile 類 表示包含檔案和檔案夾的隔離儲存區 (Isolated Storage)區,用於操控隔離儲存區 (Isolated Storage)空間檔案夾和檔案。
2.IsolatedStorageFileStream 類 表示公開隔離儲存區 (Isolated Storage)中的檔案,用於讀寫操控隔離儲存區 (Isolated Storage)空間裡的檔案流。
3.IsolatedStorageSettings 類 提供一個在隔離儲存區 (Isolated Storage)中儲存鍵/值對的 Dictionary<TKey, TValue>,用於儲存應用程式的配置資訊的Dictionary。
4.IsolatedStorageException 類 用於檢測隔離儲存區 (Isolated Storage)中的操作失敗時所引發的異常。
在Windows phone7中對檔案的操作一般有以下幾個步驟:
1.首先引入命名空間System.IO.IsolatedStorage和System.IO;
2.擷取應用程式的隔離儲存區 (Isolated Storage)空間,調用靜態方法GetUserStoreForApplication()返回IsolatedStorageFile對象;
3.利用擷取的獨立空間對象提供的方法進行IO操作(如果涉及檔案流操作,應在檔案流操作結束後將檔案流關閉);
4.對檔案操作出現異常進行捕獲。
檔案夾與檔案操作 對檔案夾與檔案的操作基於IsolatedStorageFile 類對象,常用方法有:
CopyFile(String, String):將現有檔案複製到新檔案。
CopyFile(String, String, Boolean):將現有檔案複製到新檔案,還可以覆蓋現有檔案。
CreateDirectory:在隔離儲存區 (Isolated Storage)範圍中建立目錄。
CreateFile:在隔離儲存區 (Isolated Storage)區中建立檔案。
DeleteDirectory:刪除隔離儲存區 (Isolated Storage)範圍中的目錄。
DeleteFile:刪除隔離儲存區 (Isolated Storage)區中的檔案。
DirectoryExists:檢查指定的路徑是否指的是隔離儲存區 (Isolated Storage)區中的現有目錄。
FileExists:檢查指定的路徑是否指的是隔離儲存區 (Isolated Storage)區中的現有檔案。
MoveDirectory:將指定的目錄及其內容移到新位置。
MoveFile:將指定檔案移到新位置,還可以允許您指定新檔案名稱。
OpenFile(String, FileMode): 在指定的模式中開啟檔案。
OpenFile(String, FileMode, FileAccess):以指定的檔案存取權限在指定的模式下開啟檔案。
其中在進行寫入檔案操作時,操作稍微複雜一些。 檔案的寫入是以流的方式寫入的,進行寫入操作時首先用IsolatedStorage提供的IsolatedStorageFileStream 檔案流操作類開啟該檔案; 然後再使用StreamWriter類將開啟的檔案對對象進行資料寫入;最後關閉檔案流。
在檔案的讀取操作和檔案的寫入步驟基本相同,使用StreamReader類進行讀取,最後也是需要關閉檔案流。
下面通過例子瞭解檔案夾與檔案操作實現過程
檔案夾操作:
MainPage.xaml.cs主要代碼
1 //建立檔案夾 2 void CreateButton_Click(object sender, RoutedEventArgs e) 3 { 4 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication()) 5 { 6 file.CreateDirectory(dir); 7 } 8 } 9 10 11 //查檢檔案夾12 void ExistsButton_Click(object sender, RoutedEventArgs e)13 {14 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())15 {16 if (file.DirectoryExists(dir))17 {18 MessageBox.Show("檔案夾存在!");19 }20 else21 {22 MessageBox.Show("檔案夾不存在!");23 }24 }25 26 27 //刪除檔案夾28 void DeleteButton_Click(object sender, RoutedEventArgs e)29 {30 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())31 {32 file.DeleteDirectory(dir);33 }34 }
View Code
檔案操作:
MainPage.xaml.cs
1 //建立檔案 2 void NewButton_Click(object sender, RoutedEventArgs e) 3 { 4 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication()) 5 { 6 IsolatedStorageFileStream FileStream= file.CreateFile(textBox.Text + ".txt"); 7 //關閉檔案流 8 FileStream.Close(); 9 }10 }11 //檢查檔案12 void CheckButton_Click(object sender, RoutedEventArgs e)13 {14 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())15 {16 if (file.FileExists(textBox.Text + ".txt"))17 {18 MessageBox.Show("檔案已經存在");19 }20 else21 {22 MessageBox.Show("檔案不存在");23 }24 25 }26 }27 28 //寫入檔案29 void WriteButton_Click(object sender, RoutedEventArgs e)30 {31 try32 {33 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())34 {35 //開啟檔案36 using (IsolatedStorageFileStream FileStream = file.OpenFile(FileNameTextBox.Text + ".txt", FileMode.Open, FileAccess.Write))37 {38 //執行個體化StreamWriter類39 StreamWriter streamWriter = new StreamWriter(FileStream);40 //使用WriteLine方法使用41 streamWriter.WriteLine(ContentTextBox.Text);42 //寫入完成後需要關閉43 streamWriter.Close();44 }45 }46 47 }48 catch (IsolatedStorageException ex)49 {50 MessageBox.Show(ex.ToString());51 52 }53 }54 55 56 //讀取檔案57 void ReadFilePage_Loaded(object sender, RoutedEventArgs e)58 {59 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())60 {61 if (file.FileExists(NavigationContext.QueryString["file"].ToString()))62 {63 //開啟檔案64 using (IsolatedStorageFileStream FileStream = file.OpenFile(NavigationContext.QueryString["file"].ToString(), FileMode.Open, FileAccess.ReadWrite))65 { 66 StreamReader streamReader = new StreamReader(FileStream); //執行個體化streamReader類 67 this.ContentTextBlock.Text = streamReader.ReadLine(); //使用ReadToEnd()方法讀取內容68 streamReader.Close();//關閉檔案流69 }70 }71 else72 {73 MessageBox.Show(NavigationContext.QueryString["file"].ToString() + "檔案不存在");74 }75 }76 }
View Code
Windows phone開發之檔案夾與檔案操作系列(一)檔案夾與檔案操作