Windows Phone开发(28):隔离存储B
上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件。
首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学习,你就应该一心一意,静下心来学习。
如果你不喜欢Windows phone开发,那你不必要徘徊,你可以选择IOS、Android或者其它平台。
只要你选择了,你应该要相信你所选择的,记得有一句话是这样说的:选择你所爱的,爱你所选择的,虽然这个比方不大合适,但意思是相近的。
其实,说到底,不是编程有多么难学,而很多半途而废的,其根本问题就是学习态度,我们不应该说我们的长辈,像60、70后的这一辈人怎么落后,怎么跟不上时代了,对的,从知识的积累和技能上说,我们的长辈们的的确确跟不上时代了,但是,他们身上有一个优点,这个优点是我们80后,90后的年轻人身上所没有的,那就是执着,敢于吃苦的精神,这是事实,希望各位朋友要正视这一点,人不怕缺点多,就怕你不敢面对你的缺点。
作为青春年少的我们,更应该有一种“敢于直面惨淡的人生,敢于正视淋漓的鲜血”的勇气。
只要你喜欢,不用担心Windows phone的未来,就好像当年你不必要担心.NET的前途一个道理,也不要被一些新闻和评论吓倒,作为理性的主体,我们更应该分辨真伪,许多新闻评论都是在误导我们。
不要管它微软动作慢不慢,市场目前是很小,但你知道,存在必有其价值,IT巨头们都在激烈竞争,作为开发者,我们只需要脚踏实地去学习。
最近,谷歌和甲骨文的员工在努力学习法律知识,而微软的员工在努力学习市场营销学,其实从这些现象我们知道,无论开源闭源,都各有优缺点,能在二者之间取得一个平衡,才是王道。
好了,废话就说到这里,今天的内容很简单,所以我才说那么多题外话,目的就是告诉各位WP开发者,不要浮躁,只要你能把WP开发的技能练得出神入化,哪怕它市场很小,你也能赚大钱,马宁就是一个成功案例。
隔离存储的文件读写与我们过去在其它.NET开发中的文件读写是没有区别的,只是在WP上我们用IsolatedStorageFileStream,而不是传统的FileStream罢了,说白了,就是换了一个类名,所有操作都一样,至于你信不信,反正我是信了。
现在,我用一个示例来证明,读写文件有多么简单。
新建一个项目,在主页面上放一个文本框,用来输入要写入文件的内容,放两个按钮,一个用于写操作,一个用于读操作,再放一个TextBlock,用于显示从文件读入的内容。XAML布局如下所示。
<phone:PhoneApplicationPage
x:Class="PhoneApp1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<StackPanel>
<StackPanel Margin="0,25" Orientation="Vertical">
<TextBox Name="txtContent" HorizontalAlignment="Stretch" Height="185" ScrollViewer.VerticalScrollBarVisibility="Auto" TextWrapping="Wrap"/>
<Button Name="btnWrite" HorizontalAlignment="Stretch" Height="auto" Content="将内容写入到文件" Click="btnWrite_Click"/>
</StackPanel>
<StackPanel Margin="0,25" Orientation="Vertical">
<Button HorizontalAlignment="Stretch" Content="从文件中读入" Name="btnRead" Click="btnRead_Click"/>
<TextBlock Name="txtDisplay" HorizontalAlignment="Stretch" Height="358" ScrollViewer.VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" FontSize="35"/>
</StackPanel>
</StackPanel> </phone:PhoneApplicationPage>
后台C#如下所示。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
// 引入此命名空间
using System.IO;
using System.IO.IsolatedStorage; namespace PhoneApp1
{
public partial class MainPage : PhoneApplicationPage
{
// 常量
const string MyDir = "MyData";
const string testFileName = "file"; // 构造函数
public MainPage()
{
InitializeComponent();
this.Loaded += (sender, e) =>
{
using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
{
if (iso.DirectoryExists(MyDir) == false)
{
iso.CreateDirectory(MyDir);
}
}
};
} private void btnWrite_Click(object sender, RoutedEventArgs e)
{
using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var sr = iso.CreateFile(MyDir + "\\" + testFileName))
{
StreamWriter sw = new StreamWriter(sr);
sw.Write(txtContent.Text);
sw.Close();
sw.Dispose();
}
}
} private void btnRead_Click(object sender, RoutedEventArgs e)
{
using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
{
var sr = iso.OpenFile(MyDir + "\\" + testFileName, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(sr);
string info = reader.ReadToEnd();
reader.Close();
reader.Dispose();
sr.Close();
sr.Dispose();
txtDisplay.Text = info;
}
}
}
}
上面的代码,我想各位能看得懂的,是的,就是这么简单,现在你相信了吧。
来,看看运后的结果吧。
Windows Phone开发(28):隔离存储B的更多相关文章
- 【转】Windows Phone在隔离存储里存取图片文件
一共两个页面,第一个为MainPage.xaml,代码如下: <!--ContentPanel - place additional content here--> <Grid x: ...
- Windows Phone开发(29):隔离存储C
原文:Windows Phone开发(29):隔离存储C 本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不 ...
- Windows Phone开发(27):隔离存储A
原文:Windows Phone开发(27):隔离存储A 在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储& ...
- Windows 8 应用开发 - 本地数据存储
原文:Windows 8 应用开发 - 本地数据存储 在应用中通常会遇到用户主动或被动存储信息的情况,当应用关闭后这些数据仍然会存储在本地设备上,用户下次重新激活应用时会自动加载这些数据.下 ...
- Windows Phone开发(48):不可或缺的本地数据库
原文:Windows Phone开发(48):不可或缺的本地数据库 也许WP7的时候,是想着让云服务露两手,故似乎并不支持本地数据库,所有数据都上传上"云"数据库中.不过呢,在SD ...
- Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask
原文:Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask 启动器与选择器简单的地方在于,它们的使用方法几乎一模一样,从前面几节中,我相 ...
- 安卓开发_数据存储技术_sqlite
一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 ...
- Windows 8 开发系列汇总
Windows 8 应用开发 Windows 8 应用开发 - 异步调用 Windows 8 应用开发 - 本地数据存储 Windows 8 应用开发 - 挂起与恢复 Windows 8 应用开发 - ...
- Windows驱动开发(中间层)
Windows驱动开发 一.前言 依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发. 二.初步环境 1.下载安装WDK7.1.0(WinDDK\7600.16385 ...
随机推荐
- C++ Map 容器
1.Map是c++的一个标准容器,它提供了很好一对一的关系. Map是一种关联是容器,在map中增加和删除元素非常容易.可以修改一个特定的节点而不对其他节点不产生影响,由于map是一种关联式容器,Ke ...
- LCD显示--Ht1621b芯片显示屏驱动
Ht1621b芯片显示屏驱动 关于HT1621b芯片的具体信息能够參考数据手冊上的内容:百度文库HT1621b中文资料 CS : 片选输入接一上拉电阻当/CS 为高电平读写HT1621的数据和命令无效 ...
- 系统变量file.encoding对Java的运行影响有多大?(转)good
这个话题来自: Nutz的issue 361 在考虑这个issue时, 我一直倾向于使用系统变量file.encoding来改变JVM的默认编码. 今天,我想到, 这个系统变量,对JVM的影响到底有多 ...
- Android开发经验之—intent传递大数据
在Activity或者组件之前传递信息时,一般採用intent绑定bundle的方式传值,但在使用过程中须要注意的是不要用bundle传递大容量数据: 在做项目的过程中,须要将听写界面的听写结果信息传 ...
- HDU1176:免费馅饼(DP)
Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...
- 【矩阵乘】【NOI 2012】【cogs963】随机数生成器
963. [NOI2012] 随机数生成器 ★★ 输入文件:randoma.in 输出文件:randoma.out 简单对照 时间限制:1 s 内存限制:128 MB **[问题描写叙述] 栋栋近期迷 ...
- poj2826(线段相交)
传送门:An Easy Problem?! 题意:用两条线段接雨水,雨水是垂直落下的,问我们用给定的两条线段能接到多少水. 分析:看起来很简单,写起来略麻烦,先排除不能接到水的情况: 1. 两条线段不 ...
- dedecms 文章列表和频道列表同时调用
演示效果:http://www.mypf110.com/qcd/ <div class="changshi_wrap"> {dede:channelartlist ro ...
- OpenStack25
OpenStack(25) API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组 ...
- 不知道的JavaScript
你不知道的JavaScript上卷笔记 前言 You don't know JavaScript是github上一个系列文章 初看到这一标题的时候,感觉怎么老外也搞标题党,用这种冲突性比较强的题目吸 ...