Windows Phone讀取本地資源文件
在開發過程中我們經常需要用到很多資源文件,比如城市名字和拼音對應列表等等。
這類文件為什么要作為本地資源文件用呢?一般是因為:
1、我們不喜歡把這些資源硬編碼到代碼里,比如一個城市列表“北京-Beijing、上海-Shanghai、……”,如果硬編碼到代碼里顯然不如弄到XML(或者JSON,甚至是TXT文件)里靈活。
2、盡管這種資源可以從網絡上獲取,但對于操作頻繁的操作還是做到本地比較好(然后再加載到內存中顯然更好),何況這種資源也不是很大。
WP7讀取本地資源文件,步驟很簡單。比如我們有一個city.xml需要讀取:
首先,把此文件Copy到我們的項目中,然后設置它的屬性{復制到輸出目錄:始終復制,生成操作:Resource}(當然,也可以設置成如果較新則復制,個人感覺使用效果上沒什么區別)
然后,代碼中調用:
- StreamResourceInfo reader = Application.GetResourceStream(new Uri("/{你的項目名字};component/{文件的路徑}", UriKind.Relative));
- XElement xml = XElement.Load(reader.Stream);
讀取txt文件
如果在項目中附加一個文件的時候,需要設置文件的Build Action屬性,如果設置為content ,你會在“bin”文件夾中的xap包中 發現此文件;(xap:把xap文件后加上.zip會變成一個壓縮包,解壓后會發現里面的內容)如果設置為resource,文件會添加到項目文件的 dll文件中。
- //讀取屬性Build Action為content的txt文件
- //用stream獲取文件的二進制流
- Stream st = Application.GetResourceStream(new Uri("files/firle1.txt", UriKind.Relative)).Stream;
- string str = new StreamReader(st).ReadToEnd();
- MessageBox.Show(str);
- //讀取屬性Build Action為Resource的txt文件
- Stream st1 = Application.GetResourceStream(new Uri("/demo(項目名稱);component/files/firle2.txt", UriKind.Relative)).Stream;
- string str1 = new StreamReader(st1).ReadToEnd();
- MessageBox.Show(str);
圖片文件可以通過URI訪問
添加引用
- using System.Windows.Media.Imaging;
- Uri uri = new Uri("/image/text.jpg", UriKind.Relative);
- BitmapImage bmp = new BitmapImage(uri);
- image1.Source = bmp;
XML文件可以借助XElement.Load()方法訪問
多媒體文件可以通過MediaPlayerElement控件訪問;