上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件。

首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学习,你就应该一心一意,静下心来学习。

如果你不喜欢Windows phone开发,那你不必要徘徊,你可以选择IOS、Android或者其它平台。
只要你选择了,你应该要相信你所选择的,记得有一句话是这样说的:选择你所爱的,爱你所选择的,虽然这个比方不大合适,但意思是相近的。

其实,说到底,不是编程有多么难学,而很多半途而废的,其根本问题就是学习态度,我们不应该说我们的长辈,像60、70后的这一辈人怎么落后,怎么跟不上时代了,对的,从知识的积累和技能上说,我们的长辈们的的确确跟不上时代了,但是,他们身上有一个优点,这个优点是我们80后,90后的年轻人身上所没有的,那就是执着,敢于吃苦的精神,这是事实,希望各位朋友要正视这一点,人不怕缺点多,就怕你不敢面对你的缺点。

作为青春年少的我们,更应该有一种“敢于直面惨淡的人生,敢于正视淋漓的鲜血”的勇气。

只要你喜欢,不用担心Windows phone的未来,就好像当年你不必要担心.NET的前途一个道理,也不要被一些新闻和评论吓倒,作为理性的主体,我们更应该分辨真伪,许多新闻评论都是在误导我们。
不要管它微软动作慢不慢,市场目前是很小,但你知道,存在必有其价值,IT巨头们都在激烈竞争,作为开发者,我们只需要脚踏实地去学习。
最近,谷歌和甲骨文的员工在努力学习法律知识,而微软的员工在努力学习市场营销学,其实从这些现象我们知道,无论开源闭源,都各有优缺点,能在二者之间取得一个平衡,才是王道。

好了,废话就说到这里,今天的内容很简单,所以我才说那么多题外话,目的就是告诉各位WP开发者,不要浮躁,只要你能把WP开发的技能练得出神入化,哪怕它市场很小,你也能赚大钱,马宁就是一个成功案例。

隔离存储的文件读写与我们过去在其它.NET开发中的文件读写是没有区别的,只是在WP上我们用IsolatedStorageFileStream,而不是传统的FileStream罢了,说白了,就是换了一个类名,所有操作都一样,至于你信不信,反正我是信了。

现在,我用一个示例来证明,读写文件有多么简单。
新建一个项目,在主页面上放一个文本框,用来输入要写入文件的内容,放两个按钮,一个用于写操作,一个用于读操作,再放一个TextBlock,用于显示从文件读入的内容。XAML布局如下所示。

[html] view plaincopyprint?
  1. <phone:PhoneApplicationPage
  2. x:Class="PhoneApp1.MainPage"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
  6. xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
  7. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  8. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  9. mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
  10. FontFamily="{StaticResource PhoneFontFamilyNormal}"
  11. FontSize="{StaticResource PhoneFontSizeNormal}"
  12. Foreground="{StaticResource PhoneForegroundBrush}"
  13. SupportedOrientations="Portrait" Orientation="Portrait"
  14. shell:SystemTray.IsVisible="True">
  15. <StackPanel>
  16. <StackPanel Margin="0,25" Orientation="Vertical">
  17. <TextBox Name="txtContent" HorizontalAlignment="Stretch" Height="185" ScrollViewer.VerticalScrollBarVisibility="Auto" TextWrapping="Wrap"/>
  18. <Button Name="btnWrite" HorizontalAlignment="Stretch" Height="auto" Content="将内容写入到文件" Click="btnWrite_Click"/>
  19. </StackPanel>
  20. <StackPanel Margin="0,25" Orientation="Vertical">
  21. <Button HorizontalAlignment="Stretch" Content="从文件中读入" Name="btnRead" Click="btnRead_Click"/>
  22. <TextBlock Name="txtDisplay" HorizontalAlignment="Stretch" Height="358" ScrollViewer.VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" FontSize="35"/>
  23. </StackPanel>
  24. </StackPanel>
  25. </phone:PhoneApplicationPage>

后台C#如下所示。

[csharp] view plaincopyprint?
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. using Microsoft.Phone.Controls;
  13. // 引入此命名空间
  14. using System.IO;
  15. using System.IO.IsolatedStorage;
  16. namespace PhoneApp1
  17. {
  18. public partial class MainPage : PhoneApplicationPage
  19. {
  20. // 常量
  21. const string MyDir = "MyData";
  22. const string testFileName = "file";
  23. // 构造函数
  24. public MainPage()
  25. {
  26. InitializeComponent();
  27. this.Loaded += (sender, e) =>
  28. {
  29. using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
  30. {
  31. if (iso.DirectoryExists(MyDir) == false)
  32. {
  33. iso.CreateDirectory(MyDir);
  34. }
  35. }
  36. };
  37. }
  38. private void btnWrite_Click(object sender, RoutedEventArgs e)
  39. {
  40. using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
  41. {
  42. using (var sr = iso.CreateFile(MyDir + "\\" + testFileName))
  43. {
  44. StreamWriter sw = new StreamWriter(sr);
  45. sw.Write(txtContent.Text);
  46. sw.Close();
  47. sw.Dispose();
  48. }
  49. }
  50. }
  51. private void btnRead_Click(object sender, RoutedEventArgs e)
  52. {
  53. using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
  54. {
  55. var sr = iso.OpenFile(MyDir + "\\" + testFileName, FileMode.Open, FileAccess.Read);
  56. StreamReader reader = new StreamReader(sr);
  57. string info = reader.ReadToEnd();
  58. reader.Close();
  59. reader.Dispose();
  60. sr.Close();
  61. sr.Dispose();
  62. txtDisplay.Text = info;
  63. }
  64. }
  65. }
  66. }

上面的代码,我想各位能看得懂的,是的,就是这么简单,现在你相信了吧。

来,看看运后的结果吧。

转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607129.html

Windows Phone开发(28):隔离存储B 转:http://blog.csdn.net/tcjiaan/article/details/7436959...相关推荐

  1. Windows Phone开发(27):隔离存储A 转:http://blog.csdn.net/tcjiaan/article/details/7425212...

    在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储",我想这样会更方便大家对这一概念的理解. 关于何 ...

  2. Windows Phone开发(29):隔离存储C 转:http://blog.csdn.net/tcjiaan/article/details/7447469...

    本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不过没关系,只要大家明白,它就是用于保存我们的应用程序的设置 ...

  3. Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...

    不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,Socket真的那么恐怖吗? 其实这话一点也不假,Socket有时候真的 ...

  4. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

    尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...

  5. Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

    吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序 ...

  6. Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...

    说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很重要的属性Data,你不妨在"对象浏览器"中把它抓出来看看 ...

  7. Windows Phone开发(13):如何规范用户的输入行为 转:http://blog.csdn.net/tcjiaan/article/details/7341513...

    很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的. 通改变屏幕键盘的显示模式可以规范和告诉用户, 这里应该输入什么. 要 ...

  8. Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...

    在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的 ...

  9. Windows Phone开发(30):图形 转:http://blog.csdn.net/tcjiaan/article/details/7453028

    图形如矩形.椭圆.路径等都从Shape类派生,它们一般表示规则或不规则图形,这些图形都是简单的二维图形,我相信大家都能理解的. 例一:矩形. 请看下面的XAML代码. [html] view plai ...

最新文章

  1. 【原创】如何在 Linux 下调整可打开文件/文件描述符数目
  2. 在CSDN中增加图片版权保护的方法
  3. 从0开始学Java——@override的作用
  4. CSUOJ 1525 Algebraic Teamwork
  5. python 库整理:toolz.curried (整理中)
  6. ORACLE复合索引使用 注意事项
  7. HDU - 3247 Resource Archiver (AC自动机,状压dp)
  8. 使用idea搭建Maven+SSM(Spring+SpringMVC+Mybatis)框架(一、使用Maven创建新工程)
  9. PostgreSQL Array 数组类型与 FreeSql 打出一套【组合拳】
  10. c#推箱子小游戏代码_C# 简单推箱子游戏源码
  11. 靶机Who Wants To Be King 1渗透记录
  12. 如何在WhatsApp上阻止某人
  13. PTA 顺序表的基本操作
  14. VideoReader Failed to init Ubuntu 18.04
  15. java8 .map是什么意思_JDK8 stream().map() 作用
  16. 计算机 教授级职称评定,工程技术应用研究员(俗称正高,教授级高工等等)职称评定...
  17. Python函数绘图
  18. Redis Desktop Manager连接失败/超时?
  19. 我们这些普通的网民需要知道什么是 WEB2。0吗??【WEB2。0详解 预测模式】
  20. 利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录

热门文章

  1. Putty 重新启动 linux sqlserver服务
  2. “unauthorized: authentication required” -- openshift3.9 docker push 报错
  3. 2017.5.16AM
  4. Android NDK开发篇(四):Java与原生代码通信(原生方法声明与定义与数据类型)
  5. Linux下执行.sh文件
  6. 六步实现Spring.NET 与 NHibernate 的整合
  7. Windows中木马之后桌面被篡改的恢复方法
  8. Word 2007 发布测试
  9. Kanas.net Framework 入门介绍
  10. IE6不支持min-heigt的bug解决的办法