设为首页 收藏本站
查看: 1121|回复: 0

Windows Phone 7 隔离存储空间及文件操作

[复制链接]

尚未签到

发表于 2015-5-11 07:45:25 | 显示全部楼层 |阅读模式
Windows Phone 7的隔离存储空间



  • 概念:
  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的视频,值得大家一看。
  (版权所有,转载请标明出处)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65654-1-1.html 上篇帖子: Windows Phone 7 Silverlight控件展示(含34个控件) 下篇帖子: windows phone 7图片搜索小工具(源码)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表