Windows Phone 7 隔離儲存空間及檔案操作

來源:互聯網
上載者:User
Windows Phone 7的隔離儲存空間
  1. 概念:

Windows Phone 7中所有的檔案IO操作被限制在隔離儲存空間裡面,在隔離儲存空間裡面可以增加,刪除和修改目錄檔案,在隔離儲存空間裡面可以儲存程式的配置資訊,但是每個應用程式的隔離儲存空間都是獨立的,相當於Windows Phone 的一塊記憶體被單獨划出來了,只有這一塊的內部(應用程式本身)才可以訪問其內部的資訊,而外部(其他的應用程式)無法訪問。

      2.  目錄操作

兩個重要的類:

IsolatedStorageFile:用於操作隔離儲存空間裡面的目錄以及檔案,例如增,刪,改,查等。

IsolatedStorageFileStream:用於讀寫操控隔離儲存空間裡面的檔案流,例如當我們需要往某個檔案寫入東西的時候便會使用到這個類。

IsolatedStorageSettings:用於儲存程式的配置資訊的Dictionary,例如應用程式的一些Key和Value等。

       3.  使用隔離儲存空間需要引用兩個命名空間:
using System.IO.IsolatedStorage;using System.IO;

對隔離儲存空間的操作和傳統的檔案IO操作類似

在隔離儲存空間裡裡面沒有絕對路徑或則說沒有根目錄,通常來說例如在我們的Windows 電腦上,一個檔案夾它的根目錄在C盤或則D盤或則E盤等等,但是在Windows Phone 7中則沒有根目錄,因此也就沒有絕對路徑。所以我們要取得應用程式的隔離儲存空間不能通過路徑來獲得,只能通過GetUserStoreForApplication()方法來獲得。

     

 樣本示範:

 using System.IO.IsolatedStorage;using System.IO;        private const string FolderName = "temp1";//定義一個常量,必須在此初始化        private void newbutton_Click(object sender, RoutedEventArgs e)        {           using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())          //使用using表示這個類使用完之後可以自動的釋放資源,即調用Dispose()方法。//獲得應用程式的隔離儲存空間            {             file.CreateDirectory(FolderName);//建立一個檔案夾            MessageBox.Show("建立成功!");            }        }        private void Checkbutton_Click(object sender, RoutedEventArgs e)        {            using (IsolatedStorageFile file=IsolatedStorageFile.GetUserStoreForApplication())            {            if(file.DirectoryExists(FolderName))//目錄存在            {            MessageBox.Show(FolderName+"已經存在!");            }            else            {            MessageBox.Show(FolderName+"不存在!");            }          }        }        private void Deletebutton_Click(object sender, RoutedEventArgs e)        {            using (IsolatedStorageFile file=IsolatedStorageFile.GetUserStoreForApplication())            {            if(file.DirectoryExists(FolderName))            {               file.DeleteDirectory(FolderName);//刪除目錄               MessageBox.Show(FolderName + "檔案已刪除");            }            else            {            MessageBox.Show("沒有可刪除的檔案");            }           }        }
    4.   檔案操作

          檔案操作和目錄的操作類似,也包括增,刪,改,查等操作.

          a. 建立檔案操作

              

 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())            {                FileStream filestream = file.CreateFile(FileName);//建立一個檔案                filestream.Close();//關閉檔案流,若不關閉,則刪除操作出現異常//這裡由於CreateFile()返回的是一個檔案流,即FileStream,因此我們聲明一個FileStream//變數來儲存這個檔案            }

            b. 刪除文價操作

 using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())            {                if (file.FileExists(FileName)) //檢查檔案                {                    file.DeleteFile(FileName);                }            }

           c. 檔案資訊的寫入和讀取(請看下面代碼)

  private void Writebutton_Click(object sender, RoutedEventArgs e)        {//獲得應用程式的隔離儲存空間using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())            {//開啟檔案流,FileMode.OpenOrCreate表示如果檔案不存在則建立檔案,//FileAccess.Write表示是寫入操作                using (IsolatedStorageFileStream filestream = file.OpenFile(FileName, FileMode.OpenOrCreate, FileAccess.Write))                    {                        StreamWriter strw = new StreamWriter(filestream);//指定往我們開啟的檔案流中寫入資訊                        strw.WriteLine(MsgtextBox.Text);//將MsgtextBox中的Text值寫入檔案中                        strw.Close();//關閉檔案寫入                }            }        }        private void Readbutton_Click(object sender, RoutedEventArgs e)        {//獲得應用程式的隔離儲存空間using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())               {                if (file.FileExists(FileName))//如果檔案存在才可進行讀取                {//開啟要讀取的檔案流,FileMode.Open表示只開啟檔案,//FileAccess.Read表示是進行讀取操作                    using (IsolatedStorageFileStream filestream = file.OpenFile(FileName, FileMode.Open, FileAccess.Read))                    {                        StreamReader strr = new StreamReader(filestream);//指定向開啟的檔案流讀取資訊                        MsgtextBox.Text = strr.ReadToEnd();//讀取檔案的全部資訊                        strr.Close();//關閉讀取操作                    }                }            }        }

讀取及寫入檔案小結:

      首先我們需要獲得應用程式的隔離儲存空間,然後我們需要開啟指定的檔案(開啟之後是以檔案流的形式返回),在開啟檔案的過程中有幾種情況並通過FileMode來確定我們要以那種方式開啟。接著便可以對其檔案進行相應的操作,通過FileAccess來確定我們是想進行讀取還是寫入的操作。

   5.  隔離儲存空間的配置資訊

        a. 往隔離儲存空間的配置資訊中寫入資訊

 private void SettingsWritebutton_Click(object sender, RoutedEventArgs e)        {            //將Settings放入ApplicationSettings的字典中,並將SettingstextBox的值賦給Settings            IsolatedStorageSettings.ApplicationSettings[Settings] = SettingstextBox.Text;            IsolatedStorageSettings.ApplicationSettings.Save();//儲存資訊,這一步非常關鍵,如果不儲存,那麼我們剛才添加的Settings資訊就不會儲存到應用程式的隔離儲存空間中,而是放在了記憶體中,因此將無法讀取Settings。        }

        b. 從隔離儲存空間的配置資訊中讀取資訊

 private void SettingsReadbutton_Click(object sender, RoutedEventArgs e)        {            //判斷字典中是否有Settings這個Key,如果有則將其值賦給SettingstextBox            if (IsolatedStorageSettings.ApplicationSettings.Contains(Settings))            {                //由於字典中存放的是對象,取出來之後需要轉換為相應的資料類型。        SettingstextBox.Text = IsolatedStorageSettings.ApplicationSettings[Settings] as string;            }        }

 說明:以上內容參考Jake Lin的視頻而寫,不懂可參考Jake Lin的視頻,值得大家一看。

(著作權,轉載請標明出處)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.