一、WP7的文件操作:
如果在wp7平臺上去寫入一個文件,我們會使用: IsolatedStorageFile
代碼如下:
①寫入文件
private void WriteFile(string fileName, string content)
{
using (IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream isolatedStorageFileStream = isolatedStorageFile.CreateFile(fileName))
{
using (StreamWriter streamWriter = new StreamWriter(isolatedStorageFileStream))
{
streamWriter.Write(content);
}
}
}
}
②讀取文件
private string ReadFile(string fileName)
{
string text;
using (IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream isolatedStorageFileStream = isolatedStorageFile.OpenFile(fileName, FileMode.Open))
{
using (StreamReader streamReader = new StreamReader(isolatedStorageFileStream))
{
text = streamReader.ReadToEnd();
}
}
}
return text;
}
二、WP8文件操作
wp8與win8的文件操作方式類似,如果你在win8下寫過文件操作,那么WP8自然熟悉,這需要用到2個接口:IStorageFile和 IStorageFolder, 可以看出,一個是對文件的操作,一個是對目錄的。
這兩個接口均在 :Windwos.Storage組件中,
注意:因在windows 8 開發(fā)中大量使用了WinRT異步編程方式,故在WP8中編程亦如此。
代碼如下:
①寫入文件:
public async Task WriteFile(string fileName, string text)
{
IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;
IStorageFile storageFile = await applicationFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
using (Stream stream = await storageFile.OpenStreamForWriteAsync())
{
byte[] content = Encoding.UTF8.GetBytes(text);
await stream.WriteAsync(content, 0, content.Length);
}
}
②讀取文件:
public async Task<string> ReadFile(string fileName)
{
string text;
IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;
IStorageFile storageFile = await applicationFolder.GetFileAsync(fileName);
IRandomAccessStream accessStream = await storageFile.OpenReadAsync();
using (Stream stream = accessStream.AsStreamForRead((int)accessStream.Size))
{
byte[] content = new byte[stream.Length];
await stream.ReadAsync(content, 0, (int) stream.Length);
text = Encoding.UTF8.GetString(content, 0, content.Length);
}
return text;
}
三、兼容性問題
上面的代碼分別對WP7與WP8平臺的文件寫入與讀取操作進行了簡單的說明
那么在WP7應用中的文件目錄結構定義,是不是在WP8中也是一樣的呢?
其實,兩者是有點區(qū)別的,這點區(qū)別,也是日后WP7向WP8遷移過程中必須要考慮的元素之一。
在WP7中,創(chuàng)建文件test.txt,那么,它在隔離存儲區(qū)的文件目錄結構如下:
C:\Data\Users\DefaultAppAccount\AppData\{ProductID}\Local\IsolatedStore\test.txt
在WP8中,創(chuàng)建相同文件,文件存儲目錄結構如下:
C:\Data\Users\DefaultAppAccount\AppData\{ProductID}\Local\test.txt
兩者一對比,我們發(fā)現(xiàn):在WP8開發(fā)中,如果使用現(xiàn)有的WP7代碼時,如果你不想改變原有文件目錄結構,那你就必須要首先獲取WP7隔離存儲目錄.即:
IStorageFolder applicationFolder =await ApplicationData.Current.LocalFolder.GetFolderAsync("IsolatedStore");
最后,想說明的是:
如果你想“偷懶”或者說減少開發(fā)工作量,就看看我上面說的這些
但如果打算做WP8/WIN8兩個平臺,最好全新開發(fā)基于WP8平臺的應用,這可以加快你的Win8應用的移植。