Windows Phone 8.1 数据处理

Windows Phone 8.1 应用的数据存储位置包括:

  1. Installation Folder

  2. ApplicationData

  3. Credential Locker

  4. Known Folders

  5. SD Card

  6. File System

  7. Networks

附张图:


(1)Installation Folder

Installation Folder
也就是开发者在项目里自己添加的文件,只能进行读操作

比如项目结构为:

要使用 Images 文件夹里的图片,则可以在 XAML 中这样写:

<Image x:Name="image"
Source="/Images/屏幕截图(157).png"
Stretch="Uniform"/>

若要在 C# 代码中使用,则要在文件路径前加 ms-appx:///

protected override void OnNavigatedTo(NavigationEventArgs e)
{
BitmapImage img = new BitmapImage(new Uri("ms-appx:///Images/屏幕截图(157).png"));
image.Source = img;
}

注意:文件的生成操作为内容

(2)ApplicationData

ApplicationData 也就是应用的独立存储,可自由进行读写操作,分为以下三个区域:

1)Local(Folder,Settings)

保存在手机端,没有存储限制,更新应用时会保留,包括 Folder 和 Settings。

使用方法非常简单:

StorageFolder folder = ApplicationData.Current.LocalFolder;
ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;

Folder 的操作也非常简单,当然也可以通过 Stream 来操作,如下:


StorageFolder folder = ApplicationData.Current.LocalFolder;
await folder.CreateFileAsync("some.txt");
await folder.CreateFolderAsync("some");
await folder.GetFileAsync("some.txt");
await folder.GetFolderAsync("some");
await folder.OpenStreamForReadAsync("some.txt");
await folder.OpenStreamForWriteAsync("some.txt", CreationCollisionOption.FailIfExists);

而 Settings 是一个键值对数组,用以保存简单数据,类型为 <string,
Object>,因此在读取数据时要对值进行拆箱:


ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;

settings.Values["some"] = "some";

if( settings.Values.ContainsKey("some") )
{
string some = (string)settings.Values["some"];
}

2)Roaming(Folder,Settings)

保存在云端 OneDrive 处,可以跨设备使用,但是有 100Kb 的限制,也包括 Folder
和 Settings。

Roaming 数据的操作与 Local 的操作一致,需要注意的是那 100kb
的限制,以及当漫游数据发生改变时会触发的事件 DataChanged,比如可以在该事件中更新本地数据:


public MainPage()
{
this.InitializeComponent();

ApplicationData.Current.DataChanged += Current_DataChanged;
}

private void Current_DataChanged(ApplicationData sender, object args)
{
if( localSettings.Values.ContainsKey("test") && roamingSettings.Values.ContainsKey("test") )
{
localSettings.Values["test"] = roamingSettings.Values["test"];
}
}

注意:应用必须获取了应用商店的认证才能使用数据漫游。

3)Temp(Folder)

保存在手机端的临时数据,不能保证何时被删除(如手机存储空间不足时则自动删除),只有
Folder。

使用方法与 Local 和 Roaming 一致,不同的事它是能使用 Folder。

除了以上的访问 ApplicationData 的方法外,同样的可以使用 Uri 的方式访问上述各
Folder,只需在路径前添加 ms-appdata:///:

var localFile = StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/some.txt"));
var roamingFile = StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///roaming/some.txt"));
var tempFile = StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///temp/some.txt"));

(3)Credential Locker

Credential Locak
是一个用来保存用户账号与密码对的一个私密空间,不会被其它应用访问,同时还支持同应用的跨设备漫游。

使用方法:


private void saveButton_Click(object sender, RoutedEventArgs e)
{
string username = idTextBox.Text.Trim();
string password = passwordBox.Password.Trim();

PasswordCredential cred = new PasswordCredential("weibo", username, password);

PasswordVault value = new PasswordVault();
value.Add(cred);
}

private void loadButton_Click(object sender, RoutedEventArgs e)
{
PasswordVault value = new PasswordVault();
var creds = value.FindAllByResource("weibo");

if( creds.Count != 0 )
{
foreach( var cred in creds )
{
cred.RetrievePassword();
messageTextBlock.Text += string.Format("{0}\n{1}\n{2}\n", cred.Resource, cred.UserName, cred.Password);
}
}
}

注意:在获取密码的时候必须先调用 RetrievePassword
方法,不然获取的密码为空字符串。

(4)Known Folders

Known Folders 也就是手机上特有的几个文件夹,比如音乐视频文件等。

获取方法为:


StorageFolder DocumentsLibrary = KnownFolders.DocumentsLibrary;
StorageFolder MusicLibrary = KnownFolders.MusicLibrary;
StorageFolder VideosLibrary = KnownFolders.VideosLibrary;
StorageFolder PicturesLibrary = KnownFolders.PicturesLibrary;
StorageFolder CameraRoll = KnownFolders.CameraRoll;
StorageFolder SavedPictures = KnownFolders.SavedPictures;
StorageFolder RemovableDevices = KnownFolders.RemovableDevices;

StorageFolder HomeGroup = KnownFolders.HomeGroup;
StorageFolder MediaServerDevices = KnownFolders.MediaServerDevices;

以上是可获取的所有 Known Folders,其中 HomeGroup 和
MediaServerDevices 文件夹暂时还未开放。

注意:某些文件夹的读取需要在 appxmanifest 获取权限:

(5)SD Card

SD Card 的文件读取同样需要在 appxmanifest 获取权限。

获取方法为:


var devices = KnownFolders.RemovableDevices;
var sdCards = await devices.GetFoldersAsync();

if( sdCards.Count == 0 )
return;

StorageFolder firstCard = sdCards[0];

要注意的是,对 SD Card 的文件读取需要事先在 appxmanifest
中增加文件类型关联,确定需要读取的文件类型:

(6)备注

关于使用 FilePicker API 与 FileSystem 的操作,以及
Networks 的数据操作将在其它随笔中说明。

Windows Phone 8.1 数据处理,布布扣,bubuko.com

时间: 2024-10-12 10:31:06

Windows Phone 8.1 数据处理的相关文章

Windows API参考大全新编

书名:新编Windows API参考大全 作者:本书编写组 页数:981页 开数:16开 字数:2392千字 出版日期:2000年4月第二次印刷 出版社:电子工业出版社 书号:ISBN 7-5053-5777-8 定价:98.00元 内容简介 作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的.本书首先对Win32 API函数做完整的概述:然后收录五大类函数:窗口管理.图形设备接口.系统服务.国际特性以及网络服务:在附录部分,讲解如何

UbuntuKylin15.04安装SM iObjects C++库

GIScript2015版采用SIP对iObjects C++库进行封装,可以直接调用其功能.当然了,SIP的封装方法可以封装任意的C/C++库,你可以随意去扩展它,与各种各样的库联合进行使用,简单.灵活.自由而且强大无比.这里简单介绍iObjects C++库的在UbuntuKylin15.04上的安装,独一份哦! 注意:目前的版本貌似设置与Ubuntu SDK有一些冲突(也许是我设置的问题),要使用直接QT的安装版即可. 一.下载QT和iObjects C++库 到qt.io去下载QT的社区

Windows平台分布式架构实践 - 负载均衡

概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过 Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为什么那么的迫切的希望.NET跨平台呢?第一个理由是便宜,淘宝号称4万多台服务器 全部运行在Linux,Linux平台下还有免费的MySql,这些都是免费的,这些省下来直接就是利润呀,做企业的成本可以降低又没有任何损失,何乐而 不为呢?第二个理由是在Linux系统下还有很多非常优秀的构架(当然同样也

Windows 非阻塞或异步 socket

异步与非阻塞区别见我的另外一篇文章Socket 同步/异步与阻塞/非阻塞区别 select WSAAsyncSelect WSAEventSelect 重叠(Overlapped)I/O IOCP:完成端口 Select 首先要使用ioctlsocket设置为非阻塞模式. 然后启动线程,线程中不停select. WSAAsyncSelect WSAAsyncSelect模型是Windows下最简单易用的一种Socket I/O模型.使用这种模型时,Windows会把网络事件以消息的形势通知应用程

Windows IO方法

一.综述 Winsock分别提供了"套接字模式"和"套接字I / O模型",可对一个套接字上的I/O行为加以控制.其中,套接字模式用于决定在随一个套接字调用时,那些Winsock函数的行为.而另一方面,套接字模型描述了一个应用程序如何对套接字上进行的I/O进行管理及处理. Winsock提供了两种套接字模式:锁定和非锁定. Winsock提供五中套接字模型:这些模型包括select(选择).WSAAsyncSelect(异步选择).WSAEventSelect(事件

Pandas日期数据处理:如何按日期筛选、显示及统计数据

前言 pandas有着强大的日期数据处理功能,本期我们来了解下pandas处理日期数据的一些基本功能,主要包括以下三个方面: 按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows系统,64位,python3.5. 1 读取并整理数据 首先引入pandas库 import pandas as pd 从csv文件中读取数据 df = pd.read_csv('date.csv', header=None) print(df.head(2)) 0 1 0 2013-10-24 3

开源大数据处理系统/工具大全

本文一共分为上下两部分.我们将针对大数据开源工具不同的用处来进行分类,并且附上了官网和部分下载链接,希望能给做大数据的朋友做个参考.下面是第一部分. 查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的J

Windows操作系统

Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统. Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化.随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位.32位再到64位, 系统版本从最初的Windows 1.0 到大家熟知的Windows 95.Windo

(2)在Windows 7 x64端设置Python环境

因Python语言在大数据处理,以及科学计算方向的雄起,另Django等Web框架已经在业界获得共识多年,所以本文拟搭建Python的学习开发环境.由于本人的笔记本及实验室主机系统环境以Windows为主,所以本文意在搭建Windows环境下的Python开发环境. 本文的内容主要分为以下几个部分:1.寻找合适的IDE:2.搭建Django:3.搭建Numpy+matplotlib+Scipy环境 *************************************************