wp8.1 Study11:APP里文件读写和使用XML和Json序列化

一、文件读写

1、基本操作(使用FileIO API)

  这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下:

private async void writeTextToLocalStorageFile(string filename, string text){var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹StorageFile file = await fold.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);//创建个文件await FileIO.WriteTextAsync(file, text);//在文件里面写内容
        }private async Task<string> readTextFromLocalStorage(string filename){var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹StorageFile file = await fold.GetFileAsync(filename);//打开对应的文件string result = await FileIO.ReadTextAsync(file);//读取文件里面的内容return result;}

  NOTE:所有的文件操作是异步

2、使用流(stream)操作

  我们也可以创建一个流,利用它进行读取和写入操作。它可以被使用在所有的WinRT上。

进行写操作,代码如下:

        StreamWriter writeStream = null;private async void openLocalStorageFile(string filename)//打开文件流{if (writeStream != null) return;StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;Stream baseStream = await localFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.OpenIfExists);writeStream = new StreamWriter(baseStream);}private async void closeLocalStorageFile()//关闭文件流{if (writeStream == null) return;await writeStream.FlushAsync();writeStream.Dispose();writeStream = null;}private async void writeLine(string text)//写数据到文件流中{await writeStream.WriteAsync(text + "\n");}

 

二、使用XML、JSON 序列化(serializer)

  通过之前的学习,我们已经很容易读写一些设置保存和文本,然而使用XML、JSON 序列化,我们也可以十分简单地存储对象。在Windows Phone上的序列化库,使我们非常容易储存结构化数据。应用程序可以序列化数据成XML或JSON格式,而且这些数据将被存储或转化为文本。

1、序列化规则

  • XML序列化要求的对象必须有一个无参数的构造函数。
  • 私有和静态成员将不会被保存。
  • 如果你在应用程序更新时在相应的类中添加了成员,那么在恢复使用之前的类定义的序列化的数据文件时,应用程序将会出现错误。

2、使用JSON序列化

  下面把一个Customers对象序列化了,把数据转化成了JSON文件保存。

  写操作:

using (Stream stream = await notesFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.OpenIfExists))
{DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Customers));serializer.WriteObject(stream, customers);

    await stream.FlushAsync();

    stream.Dispose();


}

  读操作:

using (Stream stream = await notesFolder.OpenStreamForReadAsync(filename))
{DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Customers));Customers result = serializer.ReadObject(stream) as Customers;
   stream.Dispose();//释放数据流 }

3、使用XML序列化

操作与JSON序列化类似,下面代码如下:

写操作:

XmlSerializer serializer = new XmlSerializer(typeof(Customers));serializer.Serialize(stream, customers);

读操作:

XmlSerializer serializer = new XmlSerializer(typeof(Customers));Customers result = serializer.Deserialize(stream) as Customers;

 

知识学习分享~~~小白一个,以上资料基本是翻译channel9里面的相关课程。

转载于:https://www.cnblogs.com/NEIL-X/p/4165735.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国AI登上Nature子刊:看病历分析儿科疾病,准确率90%,超人类医师

铜灵 发自 凹非寺量子位 出品 | 公众号 QbitAIAI大夫的能力又精进了。以前的AI要想要辅助人类诊断&#xff0c;得先学会输入大量带标注的医学影像训练模型。现在不用了&#xff0c;AI只需读一读电子文字简历&#xff0c;就能具备病情分析能力。有产品有真相。最近&#xff0c;A…

C++匿名函数Lambda

参考&#xff1a;https://www.debugself.com/archives/94 C11的新的特性&#xff1a;https://www.debugself.com/archives/100

当医疗遇上人工智能,你不可不知的未来医疗5大趋势

2015年&#xff0c;一部《超能陆战队》戳中了很多人的泪点&#xff0c;一个叫做“大白”的机器人更是萌化了无数人。在电影中&#xff0c;大白是一个融合人工智能、医疗救护、战斗能力的机器人&#xff0c;最大的任务就是守护。从医疗救护的角度来说&#xff0c;大白可以通过摄…

Hibernate继承(2)子类属性生成在自己的一张表中,父类的属性一张表

Hibernate继承&#xff08;2&#xff09;子类属性生成在自己的一张表中&#xff0c;父类的属性一张表 <?xml version"1.0"?> <!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" > <!-- 具体…

QT事件过滤器eventFilter函数

Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件&#xff0c;在事件到达之前对其进行处理。 假设我们有一个CustomerInfoDialog控件&#xff0c;由一些QLineEdit控件组成。我们希望使用Space键得到下一个QLineEdit的输入焦点。一个最直接的方法…

信息哲学给哲学带来根本性革命了吗

来源&#xff1a;中国科学报 摘要&#xff1a;信息哲学乃是区别于所有其他哲学的一种元哲学或最高哲学。由于信息哲学首先是在哲学的最高范式&#xff08;“存在领域的划分”&#xff09;层面引发的变革&#xff0c;所以信息哲学实现了人类哲学的第一次根本性转向&#xff0c;从…

运行yum时出现错误,缺失libsasl2.so.2文件

运行yum时出现错误&#xff0c;缺失libsasl2.so.2文件 [rootlocalhost /]# yum repolist There was a problem importing one of the Python modules required to run yum. The error leading to this problem was:libsasl2.so.2: cannot open shared object file: No such fil…

蜜蜂会算术吗

来源&#xff1a;中国科学报大脑袋或许并不是做数学题所必需的。蜜蜂通过了一项可能要求其进行加减的算术测试&#xff0c;尽管有人质疑这是否是真的。在测试中&#xff0c;研究人员首先向蜜蜂展示了含有1~5种形状的图片。图形颜色全部是蓝色或黄色&#xff0c;蓝色代表“加1”…

QT中的QTableView+QTableWidget

该类是显示表格数据的&#xff0c;像Excel一样&#xff0c; 参考&#xff1a;https://blog.csdn.net/qq769651718/article/details/79357938 QTableWidget控件参考&#xff1a; https://blog.csdn.net/alan00000/article/details/7951428 //QTableWidget的常用方法 tableWidg…

人工智能:主导下一轮科技创新红利

来源&#xff1a;中信证券分析师&#xff1a;许英博、陈俊云前言&#xff1a;人工智能(AI)将接棒移动互联网&#xff0c;成为下一轮科技创新红利的主要驱动力。透过丰富的数据采集(互联网和IoT)、更快的数据传输(5G)、更强大的数据运算处理(AI)&#xff0c;科技企业和传统企业将…

mysql 修复表和优化表

REPAIR TABLE table_name 修复表 OPTIMIZE TABLE table_name 优化表转载于:https://www.cnblogs.com/lvdongjie/p/4182162.html

QT的QStackedLayout

QStackedLayout栈式布局管理器管理的所有组件在垂直于屏幕的方向上&#xff0c;每次只显示一个组件界面。 参考&#xff1a;https://www.2cto.com/kf/201605/513676.html https://blog.51cto.com/9291927/1871918

AI药物全球100领军人物:43%来自学界 美英顶级AI专家人数最多

来源&#xff1a;网易智能近日&#xff0c;深度知识分析公司Deep Knowledge Analytics从最初的500名优秀候选人中&#xff0c;挑选出了“药物发现和先进医疗领域100大AI领军人物”。除非有新的“AI寒冬”来袭&#xff0c;并席卷科学探索领域&#xff0c;否则这100位科学家的工作…

初探弹出层的实现原理

首先用几句话来描述一下实现过程&#xff0c;好有个思路嘛^^&#xff1a;&#xff08;1&#xff09;先创建一个div层将整个屏幕罩住&#xff08;所谓的遮罩层&#xff09;&#xff0c;可设置该层的属性&#xff0c;例如透明度&#xff08;2&#xff09;在遮罩层内创建div来展示…

C++四种类型转换

参考&#xff1a;https://www.cnblogs.com/hyd5648/p/3921501.html

机器学习算法集锦:从贝叶斯到深度学习及各自优缺点

来源&#xff1a;图灵人工智能目录正则化算法&#xff08;Regularization Algorithms&#xff09;集成算法&#xff08;Ensemble Algorithms&#xff09;决策树算法&#xff08;Decision Tree Algorithm&#xff09;回归&#xff08;Regression&#xff09;人工神经网络&#x…

MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

介绍MongoDB支持的一些高级功能&#xff1a; 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一种特殊类型的查询来实现的&#xff0c;这些查询针对$cmd集合来执行。runCommand仅仅是接受命令文…

visual assist安装方法

参考&#xff1a;https://blog.csdn.net/yychentracy/article/details/82809888

汽车与智能家居互联时代 语音控制很关键

来源&#xff1a; I CTA编译&#xff1a;网易智能 nariiy摘要&#xff1a;对于大多数人而言&#xff0c;最昂贵的两个物件是家和汽车。如今&#xff0c;技术将这二者联系在一起&#xff0c;并互为延伸。在不断加速发展的趋势中&#xff0c;智能家居和联网汽车正在融合&#xff…

[问题解决]同时显示多个Notification时PendingIntent的Intent被覆盖?

情况是这样的&#xff0c;使用NotificationManager触发多个Notification: Java代码 private Notification genreNotification(Context context, int icon, String tickerText, String title, String content, Intent intent){ Notification notification new Notifi…